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

  • 相关阅读:
    leetcode 48. Rotate Image
    leetcode 203. Remove Linked List Elements 、83. Remove Duplicates from Sorted List 、82. Remove Duplicates from Sorted List II(剑指offer57 删除链表中重复的结点) 、26/80. Remove Duplicates from Sorted ArrayI、II
    leetcode 263. Ugly Number 、264. Ugly Number II 、313. Super Ugly Number 、204. Count Primes
    leetcode 58. Length of Last Word
    安卓操作的一些问题解决
    leetcode 378. Kth Smallest Element in a Sorted Matrix
    android studio Gradle Build速度加快方法
    禁用gridview,listview回弹或下拉悬停
    Android Studio找不到FragmentActivity类
    安卓获取ListView、GridView等滚动的距离(高度)
  • 原文地址:https://www.cnblogs.com/twodog/p/12136058.html
Copyright © 2011-2022 走看看