之前将Solr的基础环境搭建了起来。今天配置一下数据库的增量导入。实现步骤wiki上面写的已经很清楚,主要注意两点,一是索引的中文分词,二是自定义字段。solr自带的schema.xml中已经配置了常用字段,遇不包含字段需要定义。依wiki,实现solr索引定时增量导入大致需五步。
第一步,配置requesthandler于solrconfig.xml内容如下
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">./data-config.xml</str> </lst> </requestHandler>
用到的jar包solr-dataimporthandler-4.3.0.jar位于solr-4.3.0\dist,需要拷贝到tomcat/webapps/lib下。
第二步,编写data-config.xml和dataimport.properties。solr发布包中随带了一个demo位于solr-4.3.0\example\example-DIH\solr\db\conf直接拿来稍作修改
<dataConfig> <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/solr_import" user="root" password="admin"/> <document> <entity name="item" query="select * from item" deltaQuery="select id from item where last_modified > '${dataimporter.last_index_time}'"> <field column="ID" name="id" /> <field column="NAME" name="name" /> <field column="MANU" name="manu" /> <field column="WEIGHT" name="weight" /> <field column="PRICE" name="price" /> <field column="POPULARITY" name="popularity" /> <field column="INSTOCK" name="inStock" /> <field column="INCLUDES" name="includes" /> <entity name="feature" query="select DESCRIPTION from FEATURE where ITEM_ID='${item.ID}'" deltaQuery="select ITEM_ID from FEATURE where last_modified > '${dataimporter.last_index_time}'" parentDeltaQuery="select ID from item where ID=${feature.ITEM_ID}"> <field name="features" column="DESCRIPTION" /> </entity> <entity name="item_category" query="select CATEGORY_ID from item_category where ITEM_ID='${item.ID}'" deltaQuery="select ITEM_ID, CATEGORY_ID from item_category where last_modified > '${dataimporter.last_index_time}'" parentDeltaQuery="select ID from item where ID=${item_category.ITEM_ID}"> <entity name="category" query="select DESCRIPTION from category where ID = '${item_category.CATEGORY_ID}'" deltaQuery="select ID from category where last_modified > '${dataimporter.last_index_time}'" parentDeltaQuery="select ITEM_ID, CATEGORY_ID from item_category where CATEGORY_ID=${category.ID}"> <field column="description" name="cat" /> </entity> </entity> </entity> </document> </dataConfig>
#Fri Jan 17 11:44:56 CST 2014 interval=1 port=80 server=localhost params=/dataimport?command\=delta-import&clean\=false&commit\=true webapp=solr reBuildIndexInterval=2 dataimporter.last_index_time=1914-01-14 17\:40\:00 syncEnabled=1 last_index_time=2014-01-17 11\:44\:55 item.last_index_time=2014-01-17 11\:44\:55 reBuildIndexParams=/dataimport?command\=full-import&clean\=true&commit\=true reBuildIndexBeginTime=03\:10\:00 syncCores=collection1
第三步,修改schema.xml支持中文分词。data-config.xml中filed引用schema.xml中的filedType,而schema.xml中name,manu等字段类行为text_general,需要改为之前配置的text_zh.
第四步建数据库,数据库脚本也都是现成的,位于solr-4.3.0\example\example-DIH\hsqldb\ex.script。demo是基于sqldb的,稍作修改即可用于mysql。将数据库驱动拷到lib。insert N笔数据(中文)作为测试。
第五步,建索引。依次打开solr控制台-——>dataimport,command首次选full-import,勾选commit,Entity选择item——>execute。
索引结果如何?在solr控制台左侧选择Query,q填写name:关键字,execute query。效果如图
相关推荐
增量导入是针对大型数据集优化的一种策略,当数据库中的数据发生变化时,Solr并不需要重新导入所有数据,而是仅仅导入那些新增或修改过的记录。这大大减少了索引时间和存储空间的需求。 二、实现机制 1. ...
2. **增量导入**:增量导入只导入自上次导入以来发生变化的数据。Solr通过跟踪数据源中的“lastModified”或者其他时间戳字段来识别新数据或已修改的数据。这样可以显著减少索引时间和资源使用。 "apache-solr-...
它支持全量导入和增量导入,全量导入是重新导入所有数据,而增量导入则只导入自上次导入以来发生改变的数据,这样可以大大提高效率。 `solr-dataimporthandler-extras-6.5.1.jar` 包含了DIH的额外组件和功能,例如...
- **Delta Import**:增量导入,只导入自上次导入以来数据库中发生变化的数据。 4. **数据分析与预处理** - **分析器(Analyzer)**:Solr使用分析器对输入文本进行分词、过滤和标准化,以便进行精确匹配。 - **...
7. **性能优化**:在大型数据集上,考虑优化DataImportScheduler的性能,如分批导入、增量导入以及并行处理等策略,以提高索引构建的速度。 8. **版本兼容性**:虽然这里提到的是与Solr 5.4.0的兼容性,但...
Solr还支持增量导入、delta-import等其他模式。 10. **处理中文字符**:如果处理中文数据,需要在Tomcat的`server.xml`中设置URI编码为UTF-8,例如: ```xml ``` 11. **添加中文分词器**:如需使用中文分词,...
4. 配置灵活性:数据导入调度器支持多种配置方式,可以根据实际需求选择合适的策略,如全量导入、增量导入、基于时间戳的增量更新等。 5. 日志记录与错误处理:在执行过程中,调度器会记录详细的执行日志,便于排查...
DIH 支持全量导入和增量导入,全量导入会将整个数据源重新导入,而增量导入只导入自上次导入以来发生改变的数据,这对于实时数据更新非常重要。 Apache Solr DataImportScheduler 插件就是在 DIH 的基础上增加了...
"solr定时增量更新jar包1.4"是专门为Solr设计的一个组件,它允许用户设置定时任务来自动检测和导入新的或者修改过的数据,从而保持索引与数据库或其他数据源的一致性。 这个组件主要依赖于`apache-solr-...
DIH支持全量导入和增量导入,这使得Solr可以保持与数据库的实时同步,从而提供最新的搜索结果。 1. **DataImportHandler (DIH)**: DIH是Solr的一个核心特性,允许开发者定义数据源、数据转换和数据加载过程。它通过...
本教程以"跟益达学Solr5之增量索引MySQL数据库表数据"为主题,旨在教授如何利用Solr5来实现对MySQL数据库表数据的增量索引,以便在海量数据中快速检索。 首先,我们需要了解Solr的基本架构。Solr运行在Jetty服务器...
DataImportHandler是Apache Solr的一个特性,它允许Solr从外部数据源导入数据,如数据库、文件系统或其他Web服务。DIH的主要目的是简化索引过程,使Solr能够动态地、增量地更新其索引,而无需每次变更都完全重建索引...
Solr 数据导入调度器(Solr DataImportScheduler)是一个用于 Apache Solr 的插件,它允许用户设置定期的、自动的数据导入任务。标题中的 "solr-dataimportscheduler-1.1.jar" 指的是该插件的一个特定版本,即1.1版...
DIH支持全量导入和增量导入,使得在数据发生变化时,Solr能够快速反映这些变化。 Solr-dataimport-scheduler扩展了DIH的功能,增加了定时任务的管理。这意味着用户不再需要手动触发数据导入,而是可以设置定时规则...
4. **增量导入和 delta-import**: 如果数据源有实时更新,可以使用增量导入功能只导入自上次导入以来发生变化的记录,提高效率。 在实际应用中,我们还需要关注性能优化、安全性、集群部署等方面。例如,可以通过...
本实践教程将指导你如何整合MySQL数据库与Solr 8.2.0,实现数据的高效检索。 一、安装与部署Solr 8.2.0 首先,你需要从官方源下载Solr 8.2.0的压缩包`solr-8.2.0.rar`,解压后得到包含`bin`、`server`等目录的完整...
除了全量导入,DIH还支持增量导入,仅更新自上次导入以来发生改变的数据。这通常通过跟踪数据库的最后修改时间或类似机制来实现,从而提高效率并减少不必要的资源消耗。 总的来说,solr-dataimport-scheduler.jar是...
Solr 的增量数据导入主要是指将数据库中的增量数据导入到 Solr 中。 Solr 文件数据导入 Solr 的文件数据导入主要是指将文件中的数据导入到 Solr 中。 Solr 文件主键解决方案 Solr 的文件主键解决方案主要是指...
Solr-dataimportscheduler-1.1.1.jar 是一个针对Apache Solr的扩展插件,主要功能是实现数据的增量导入。Apache Solr是一个流行的开源全文搜索引擎,它提供了高效的搜索和索引能力,广泛应用于网站内容检索、产品...