solr 5.5.2 集成mysql 索引增量权利更新

来源:互联网 发布:java spring 异步调用 编辑:程序博客网 时间:2024/05/29 04:37

之前很多内容也是从网上巴拉巴拉的拼凑的,第一次接触solr其实都是瞎搞 这边给出一些solr中安装使用的一些坑,希望帮到大家吧


solr在4 之前是有war包的 5的时候貌似就没有了 但是内置了服务容器启动 默认路径solr安装目录/solr/bin/ 启动方式 ./solr.cmd start || ./solr.sh start 
启动完之后都讲直接访问localhost:PORT 可以直接看到管理页面,其实有些意外的,如果没有看到core自己需要去solr/server/ 下创建目录 这边给出test

从solr\configsets\下一个文件夹内(自选) 拷贝一份conf文件到你的test目录下,然后到页面添加


 
  导入mysql-connector-java-*.jar/solr-dataimporthandler-*.jar/solr-dataimporthandler-extras-*.jar 到 \solr\server\lib 

进入 server\solr\test\conf 目录 修改solrconfig 添加 
  <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />  
 
  <lib dir="${solr.install.dir:../../../..}/dist/" regex="mysql-connector-java-.*\.jar" />  刚才导入的jar包引用
 
<!-- zealot add -->
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">   
          <lst name="defaults">   
                <str name="config">data-config.xml</str>   
         </lst>   
</requestHandler>
<!-- zealot add -->

同目录创建data-config.xml 
<dataConfig>


    <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" 
url="jdbcurl" user="root" password="root"/>


    <document name="articleZindex">


        <entity name="demo" 

query="select * from table"
            
deltaImportQuery="select * from table where table.id ='${dih.delta.id}'"  
            
deltaQuery="select id from table where CREATETIME > '${dih.last_index_time}'">  


        </entity>


    </document>


</dataConfig>

特别指出增量任务需要增加deltaImportQuery、deltaQuery  会记录上一次的ID 和 时间 已查看是否需要更新

到此导入任务完成,可以重启服务查看数据 第一次自己需要去

全量导入任务,然后自己去logging查看导入日志,可别傻等着看结果。。。。


最后进入server\solr目录
创建conf 这个是为了做定时任务全量增量导入数据使用,但是为什么这么放也很奇怪,在conf中创建dataimport.properties 添加以下内容
syncEnabled=1
server=127.0.0.1
port=8983
webapp=solr  
#  增量更新的请求参数  
params=/test/dataimport?command=delta-import&clean=false&commit=true
#  这里配置的是
1min一次  
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
然后在\solr-webapp下的web.xml中添加监听 
//同步数据任务
   <listener>    
    <listener-class>    
            org.apache.solr.handler.dataimport.scheduler.ApplicationListener    
    </listener-class>    
  </listener> 

同时需要导入mydataimportscheduler.jar 到 \solr-webapp下的lib中

然后增量任务就可以实现了



“:” 指定字段查指定值,如返回所有值*:*² 
 “?” 
表示单个任意字符的通配² 
 “*” 
表示多个任意字符的通配(不能在检索的项开始使用*或者?符号)² 
 “~” 
表示模糊检索,如检索拼写类似于”roam”的项这样写:roam~将找到形如foam和roams的单词;roam~0.8,检索返回相似度在0.8以上的记录。² 
 
邻近检索,如检索相隔10个单词的”apache”和”jakarta”,”jakarta apache”~10² 
 “^” 
控制相关度检索,如检索jakarta apache,同时希望去让”jakarta”的相关度更加好,那么在其后加上”^”符号和增量值,即jakarta^4 apache² 
 
布尔操作符AND、||² 
 
布尔操作符OR、²&& 
 
布尔操作符NOT、!、- (排除操作符不能单独与项使用构成查询)² 
 “+” 
存在操作符,要求符号”+”后的项必须在文档相应的域中存在² 
 ( ) 
用于构成子查询² 
 [] 
包含范围检索,如检索某时间段记录,包含头尾,date:[200707 TO 200710]² 
 {} 
不包含范围检索,如检索某时间段记录,不包含头尾² 
date:{200707 TO 200710} 
 \ 
转义操作符,特殊字符包括+ -² && || ! ( ) { } [ ] ^ ” ~ * ? : \ 
支持各种检索!是不是比普通数据库检索要好很多 以上有些内容是从别的文章拿过来的 因为拼拼凑凑才组成的一个能用的 有不对的地方敬请谅解!


分享到:QQ空间新浪微博网易微博腾讯微博搜狐微博豆瓣人人网更多
1 0
原创粉丝点击