注:全量索引和增量索引data-config.xml和delta-data-config.xml配置文件默认放在和solrconfig.xml同级目录

solrconfig.xml配置如下:

<requestHandler name="/dataimport"  
         class="org.apache.solr.handler.dataimport.DataImportHandler">  
         <lst name="defaults">  
              <str name="config">delta-data-config.xml</str>  
         </lst>  
    </requestHandler>  

delta-data-config.xml

<dataConfig>  
    <dataSource name="jdbc" driver="com.mysql.jdbc.Driver"  
        url="jdbc:mysql://localhost:3306/test?zeroDateTimeBehavior=convertToNull"  
        user="root" password="shyh"/>  
    <document name="st_data">  
        <entity name="solrtext" pk="id"  
               query="select * from solrtext"  
                deltaImportQuery="select * from solrtext where id='${dih.delta.id}'"  
                deltaQuery="select id from solrtext where addon > '${dih.last_index_time}'"  
                transformer="RegexTransformer">  
            <field column="id" name="id" />  
            <field column="url" name="url" />  
            <field column="title" name="title" />  
            <field column="author" name="author" />  
        <field column="addon" name="addon"/>  
        <field column="path" name="path"/>  
        </entity>  
    </document>  
</dataConfig>  

schemal.xml

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />   
<field name="url" type="text_general" indexed="true" stored="true" />  
<field name="title" type="text_general" indexed="true" stored="true"/>  
<field name="author" type="text_general" indexed="true" stored="true"/>  
<field name="addon" type="string" indexed="true" stored="true"/>  
 <field name="path" type="string" indexed="false" stored="true"/>  

上面主要是通过内置变量“${dih.delta.id}”和 “${dih.last_index_time}”来记录本次索引的id和最后索引时间。

这里,会保存在deltaimport.properties文件中,示例如下

#Mon Jan 26 11:13:07 CST 2015  
solrtext.last_index_time=2015-01-26 11\:12\:35  
last_index_time=2015-01-26 11\:12\:35  

配置定时任务:

  • 将 apache-solr-dataimportscheduler-1.0.jar 和solr自带的 apache-solr-dataimporthandler-.jar, 
  • apache-solr-dataimporthandler-extras-.jar 放到tomcat/webapps/solr/WEB-INF的lib目录下面 (apache-solr-dataimportscheduler.jar,solr-dataimporthandler-6.1.0.jar,solr-dataimporthandler-extras-6.1.0.jar这是添加的jar,因为我用的是solr6,所以jar版本不一样,各位请自行查找对应的版本。)
  • 修改solr中WEB-INF/web.xml
<listener>  
          <listener-class>  
                org.apache.solr.handler.dataimport.scheduler.ApplicationListener  
          </listener-class>  
</listener> 
  • 在D:\solr\home文件夹下建立conf文件夹,然后建立dataimport.properties文件

  • solr.xml配置如下
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>  
   <Context docBase="F:\solr\apache-tomcat-7.0.53\webapps\solr.war" debug="0" crossContext="true" >  
    <Environment name="solr/home" type="java.lang.String" value="F:\solr\solrhome" override="true" />  
   </Context>  
  • dataimport.properties配置说明
#################################################  
#                                               #  
#       dataimport scheduler properties         #  
#                                               #  
#################################################  
   
#  to sync or not to sync  
#  1 - active; anything else - inactive  
syncEnabled=1  
   
#  which cores to schedule  
#  in a multi-core environment you can decide which cores you want syncronized  
#  leave empty or comment it out if using single-core deployment  
syncCores=collection1  
   
#  solr server name or IP address  
#  [defaults to localhost if empty]  
server=localhost  
   
#  solr server port  
#  [defaults to 80 if empty]  
port=8080  
   
#  application name/context  
#  [defaults to current ServletContextListener's context (app) name]  
webapp=solr  
   
#  URL params [mandatory]  
#  remainder of URL  
params=/dataimport?command=delta-import&clean=false&commit=true  
   
#  schedule interval  
#  number of minutes between two runs  
#  [defaults to 30 if empty]  
interval=1  
   
#  重做索引的时间间隔,单位分钟,默认7200,即5天;   
#  为空,为0,或者注释掉:表示永不重做索引  
reBuildIndexInterval=7200  
   
#  重做索引的参数  
reBuildIndexParams=/dataimport?command=full-import&clean=true&commit=true  
   
#  重做索引时间间隔的计时开始时间,第一次真正执行的时间=reBuildIndexBeginTime+reBuildIndexInterval*60*1000;  
#  两种格式:2012-04-11 03:10:00 或者  03:10:00,后一种会自动补全日期部分为服务启动时的日期  
reBuildIndexBeginTime=03:10:00  


浏览 734 评论 0 赞 0 砸 0 标签: 全文检索 solr
评论
还可以再输入500个字

请您注意

·自觉遵守:爱国、守法、自律、真实、文明的原则
·尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法规
·严禁发表危害国家安全,破坏民族团结、国家宗教政策和社会稳定,含侮辱、诽谤、教唆、淫秽等内容的作品
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·您在NoteShare上发表的作品,NoteShare有权在网站内保留、转载、引用或者删除
·参与本评论即表明您已经阅读并接受上述条款