Solr搜索引擎(3)索引mysql数据

柔情只为你懂 2022-06-07 00:55 313阅读 0赞

1、修改配置

将数据库驱动jar和solr/dist路径下的solr-dataimporthandler-x.x.x.jar复制到solr-x.x.x/server/solr-webapp/webapp/WEB-INF/lib下
在solr/server/solr/核心/conf路径下添加文件data-config.xml,并添加以下内容(示范如下)

  1. <dataConfig>
  2. <!-- url如果包含特殊字符如";",必须使用html转移字符 -->
  3. <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.100.25:6660/tbcms" user="root" password="123456"/>
  4. <document>
  5. <!-- query为全量更新SQL -->
  6. <entity name="T_TBPackage" pk="TBPackageID" query="select * from T_TBPackage" <!-- 每一个field映射着数据库中列与文档中的域,column是数据库列,name是solr的域(必须是在managed-schema文件中配置过的域才行) -->
  7. <field column="TBPackageID" name="id"/>
  8. <field column="TBPackageName" name="TBPackageName"/>
  9. <field column="PackageTypeID" name="PackageTypeID"/>
  10. <field column="PINCount" name="PINCount"/>
  11. <field column="PINCenterDistance" name="PINCenterDistance"/>
  12. <field column="ElementBodyWidth" name="ElementBodyWidth"/>
  13. <field column="ElementPlasticBodyLength" name="ElementPlasticBodyLength"/>
  14. <field column="Height" name="Height"/>
  15. <field column="ExposedPad" name="ExposedPad"/>
  16. </entity>
  17. </document>
  18. </dataConfig>

修改solrconfig.xml,添加以下内容

  1. <requestHandler name="/dataimport" class="solr.DataImportHandler">
  2. <lst name="defaults">
  3. <str name="config">data-config.xml</str>
  4. </lst>
  5. </requestHandler>

修改managed-schema,添加mysql中需要存入solr的字段(示范如下)

  1. <field name="TBPackageName" type="string" indexed="true" stored="true"/>
  2. <field name="PackageTypeID" type="string" indexed="true" stored="true"/>
  3. <field name="PINCount" type="string" indexed="true" stored="true"/>
  4. <field name="PINCenterDistance" type="string" indexed="true" stored="true"/>
  5. <field name="ElementBodyWidth" type="string" indexed="true" stored="true"/>
  6. <field name="ElementPlasticBodyLength" type="string" indexed="true" stored="true"/>
  7. <field name="Height" type="string" indexed="true" stored="true"/>

重启solr

2、全量索引

2.1、执行全量更新

这里写图片描述

2.2、更新成功

这里写图片描述

3、增量索引

3.1、solr默认使用UTC时间,即与中国时差8小时,所以需要修改配置文件bin/solr.in.sh

  1. SOLR_TIMEZONE="UTC+8"

3.2、修改mysql数据库的表结构,添加一个时间戳字段,当某行数据发生更新时该字段自动更新为修改数据的时间,为solr增量添加提供服务(范例如下)

  1. last_modified timestamp not null on update current_timestamp default current_timestamp

3.3、修改solr/server/solr/核心/conf路径下添加文件data-config.xml,并添加增量SQL(示范如下)

  1. <dataConfig>
  2. <!-- url如果包含特殊字符如";",必须使用html转移字符 -->
  3. <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.100.25:6660/tbcms" user="root" password="123456"/>
  4. <document>
  5. <!-- deltaQuery检索出增量更新需要更新的字段 -->
  6. <entity name="T_TBPackage" pk="TBPackageID" query="select * from T_TBPackage" deltaQuery="select TBPackageID from T_TBPackage where last_modified > '${dih.last_index_time}'">
  7. <!-- 每一个field映射着数据库中列与文档中的域,column是数据库列,name是solr的域(必须是在managed-schema文件中配置过的域才行) -->
  8. <field column="TBPackageID" name="id"/>
  9. <field column="TBPackageName" name="TBPackageName"/>
  10. <field column="PackageTypeID" name="PackageTypeID"/>
  11. <field column="PINCount" name="PINCount"/>
  12. <field column="PINCenterDistance" name="PINCenterDistance"/>
  13. <field column="ElementBodyWidth" name="ElementBodyWidth"/>
  14. <field column="ElementPlasticBodyLength" name="ElementPlasticBodyLength"/>
  15. <field column="Height" name="Height"/>
  16. <field column="ExposedPad" name="ExposedPad"/>
  17. </entity>
  18. </document>
  19. </dataConfig>

3.4、重启solr
3.5、增量更新,此处clean选项必须取消勾选。否则当增量更新成功后,会把没有增量更新的数据删除!!!
这里写图片描述
3.6、更新成功
这里写图片描述
注: 存放上一次更新时间的配置文件为solr/server/solr/核心/conf/dataimport.properties

发表评论

表情:
评论列表 (有 0 条评论,313人围观)

还没有评论,来说两句吧...

相关阅读

    相关 搜索引擎 Solr 简介

    1.前言 企业站内搜索技术选型 在一些大型门户网站、电子商务网站等都需要站内搜索功能,使用传统的数据库查询方式实现搜索无法满足一些高级的搜索需求,比如:搜索速度要快