zoukankan      html  css  js  c++  java
  • solr7.4创建core,导入MySQL数据,中文分词

    #solr版本:7.4.0

    一、新建Core

    1. 进入安装目录下得server/solr/,创建一个文件夹,如:new_core

    2. 拷贝server/solr/configsets/_default/conf/下的solrconfig.xml、protwords.txt、synonyms.txt、stopwords.txt文件和lang文件夹,到刚刚创建的new_core文件夹下

    3. 拷贝server/solr/configsets/_default/conf/下的schema.xml文件到刚刚创建的new_core文件夹下,将其重命名为schema.xml

    4. 进入solr页面选择Core Admin,设置好名字还有刚才新建的dir,Add Core
      solr7.4创建core,导入MySQL数据,中文分词

    5. 然后在core selector 就能看到刚才新建的core 了。

    solr7.4创建core,导入MySQL数据,中文分词

    二、导入MySQL数据

    1. 打开刚添加的solrconfig.xml文件 vi server/solr/new_core/solrconfig.xml,查找一下requestHandler标签,在标签同级下加入导入数据的配置
      <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
      <lst name="defaults">
          <str name="config">db-data-config.xml</str>
      </lst>
      </requestHandler>
    2. new_core下新增db-data-config.xml文件(样例在安装目录example/example-DIH/solr/db/conf/下有),并添加如下配置:
      <dataConfig>
      <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/db_name" user="root" password="" />
      <document>
          <entity name="product" 
                      query="select product_id as id,title from table_name"
                   deltaImportQuery="select product_id as id,title from table_name where PRODUCT_ID='${dih.delta.id}'"
                      deltaQuery="select product_id as id from table_name where add_time > '${dataimporter.last_index_time}'">
          </entity>
      </document>
      </dataConfig>
    3. 下载mysql-connector-java驱动 https://dev.mysql.com/downloads/connector/j/
      解压mysql-connector-java-(xxx).jar到安装目录下的server/solr-webapp/webapp/WEB-INF/lib
    4. 在页面上选择Dataimport应该有了
      solr7.4创建core,导入MySQL数据,中文分词
    5. 在Schema上添加字段,如title(要存在query属性的sql语句能查出来的那些字段当中)
      solr7.4创建core,导入MySQL数据,中文分词
      solr7.4创建core,导入MySQL数据,中文分词
    6. 在Dataimport 上执行导入,可以看到已经新增了4条记录了
      solr7.4创建core,导入MySQL数据,中文分词
      然后在query上查看导入结果
      solr7.4创建core,导入MySQL数据,中文分词

    三、增量导入MySQL数据

    1. 导入数据不可能每次全量导入,新增的数据只要增量导入就好,检查db-data-config.xml配置,确保有deltaImportQuery, deltaQuery两项
      last_index_time会保存在这个core的Instance目录下的conf/dataimport.properties文件
      solr7.4创建core,导入MySQL数据,中文分词
    2. 现在我在数据表中再插入几条数据
      solr7.4创建core,导入MySQL数据,中文分词
    3. 这次我们在页面选择delta-import执行一下看看
      solr7.4创建core,导入MySQL数据,中文分词
    4. 再去看下结果,也成功导入
      solr7.4创建core,导入MySQL数据,中文分词
      5.这是细心的人会发现dataimport.properties记录的是UTC时间,而数据表中用的是中国时间,要怎么让它们一致呢?
      这里提供一个解决办法,利用sql语句来转换时区:
      修改deltaQuery
      SELECT product_id AS id FROM table_name WHERE add_time > '${dataimporter.last_index_time}'

      改为

      SELECT product_id AS id FROM table_name WHERE add_time > CONVERT_TZ('${dataimporter.last_index_time}', '+00:00', '+08:00')

    四、中文分词

    1. 拷贝分词jar到指定目录server/solr-webapp/webapp/WEB-INF/lib/
      cp contrib/analysis-extras/lucene-libs/lucene-analyzers-smartcn-7.4.0.jar server/solr-webapp/webapp/WEB-INF/lib/
    2. 编辑schema文件 vi server/solr/new_core/conf/managed-schema
      添加:
      <fieldType name="text_cn" class="solr.TextField" positionIncrementGap="100">
        <analyzer type="index">
          <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
        </analyzer>
        <analyzer type="query">
          <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
        </analyzer>
      </fieldType>

      把title改为text_cn类型

    3. 重启solr,title已经改为text_cn,但是还没分词效果
      solr7.4创建core,导入MySQL数据,中文分词
    4. 在dataimport选择clean再full-import一次,重新导入数据,再回到字段查看一下Term Info ,这次分词成功了
      solr7.4创建core,导入MySQL数据,中文分词

    转载于:https://blog.51cto.com/13956067/2170843

  • 相关阅读:
    Count_sort C++
    Priority_Queue C++
    HeapSort C++
    Randomized_QuickSort C++
    QuickSort c++
    我的开发环境
    github and eclipse
    centos 7 install eclipse cdt and use github
    github commands
    文化-梁晓声
  • 原文地址:https://www.cnblogs.com/twodog/p/12136058.html
Copyright © 2011-2022 走看看