设为首页 收藏本站
查看: 1599|回复: 0

[经验分享] SOLR (全文检索)

[复制链接]

尚未签到

发表于 2015-7-17 10:06:06 | 显示全部楼层 |阅读模式
SOLR (全文检索)

http://sinykk.iteye.com/

1.   什么是SOLR
  官方网站
  http://wiki.apache.org/solr
  http://wiki.apache.org/solr/DataImportHandler
  本文档以solr3.4   tomcat6.3  IKAnalyzer3.2.5Stable为例
  
  
1.1. 什么是SOLR
  
  Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
  文档通过Http利用XML 加到一个搜索集合中。查询该集合也是通过http收到一个XML/JSON响应来实现。它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,
  
  
  
1.2. 在什么场合使用
  1、  你搜索数据库数据时你的主键不是整形的,可能是UUID
  2、  搜索任何文本类文档,甚至包括RSS,EMAIL等
  
  
2.   如何使用solr
  
  通过在WINDOWS或LINUX服务器安装SOLR服务器,并配置上相应的索引规则,通过JAVA或PHP等脚本语言进行调用和查询
2.1. Window下安装solr

  • 1.  下载所需软件,安装配置Tomcat。
  下载软件为 :Tomcat与Solr,jdk1.6,官网都可免费下载。

  • 2.  Tomcat 配置文件conf\server.xml
  添加编码的配置 URIEncoding="UTF-8" (如不添加,中文检索时因为乱码搜索不到)。
添加后为:


  • 3.  将D:\solr\apache-solr-3.3.0解压
  5. 建立d:/solr/home主目录(可以根据自己的情况建立),把D:\solr\apache-solr-3.3.0\example\solr复制到该目录下。
  6. 建立solr.home 环境变量:置为 d:/solr/home
  7. 将solr.War复制到tomcat的webapp下启动是会自动解压。
  8. 修改D:\resouce\java\tomcat\webapps\solr\WEB-INF\web.xml.
  
solr/home
d:\solr\home
java.lang.String

9. 启动tomcat,浏览器输入:http://localhost:8080/solr/
10.看到页面说明部署成功
  
  
2.2. linux下安装solr
  此linux安装版结合直接安装带有分词功能
1、将TOMCAT解压到 /usr/local/apache-tomcat-6.0.33/

2、将 /solr/apache-solr-3.3.0/example/solr 文件拷贝到/usr/local/apache-tomcat-6.0.33/

3、然后修改TOMCAT的/usr/local/apache-tomcat-6.0.33/conf/server.xml【增加中文支持】



4、添加文件/usr/local/apache-tomcat-6.0.33/conf/Catalina/localhost/solr.xml 内容如下



   




   


5、将/sinykk/solr/apache-solr-3.3.0/example/webapps/solr.war文件放到/usr/local/apache-tomcat-6.0.33/webapps文件夹下,并启动TOMCAT

6、将/sinykk/solr/IKAnalyzer3.2.8.jar 文件放到/usr/local/apache-tomcat-6.0.33/webapps/solr/WEB-INF/lib 目录下


7、修改/usr/local/apache-tomcat-6.0.33/solr/conf/schema.xml文件为




   

     


     

                 

      

                 

                     

                     

                    

                     

                    

                     

               

               

                     

                     

                    

                     

                    

                     

               

      






   



id






   

   


   

                 

      

                 

                     

                     

                    

                     

                    

                     

                 

            

                     

                     

                     

                     

                    

                     

                 

      






   



id



最后运行http://192.168.171.129:8983/solr/admin/analysis.jsp

  
  
  
2.3. solr 将MYSQL数据库做成索引数据源
  solr 将MYSQL数据库做成索引数据源【注意格式】
  参考:http://digitalpbk.com/apachesolr/apache-solr-mysql-sample-data-config

  • 1.  在solrconfig.xml中添加,增加导入数据功能
   

         

           data-config.xml   

         






  • 2.  添加一个数据源data-config.xml,代码如下


   

   

        

            

           

           

      

   




  • 3.  3、创建schema.xml语法,代码如下


     

     


     


     

      

      

        

        

     

      

      

        

        

        

     

   


      





   

   

   



id

contents







      

     


     


     

      

        

        

        

      

      

        

        

        

        

      

   


      





   

   

   



id

contents





schema.xml 里重要的字段

要有这个copyField字段SOLR才能检索多个字段的值【以下设置将同时搜索 title,name,contents中的值】
contents
copyField是用來複製你一個欄位裡的值到另一欄位用. 如你可以將name裡的東西copy到default裡, 這樣solr做檢索時也會檢索到name裡的東西.


4、创建索引

http://192.168.171.129:8983/solr/dataimport?command=full-import

注:保证与数据库连接正确

  
  
  
2.4. SOLR多个索引共存 multiple core
  参考:http://wiki.apache.org/solr/CoreAdmin

  • 1.  配置多个索引


  

  



2、将D:\solr\apache-solr-3.3.0\example\multicore下的 core0,core1两个文件拷贝到D:\solr\home下,D:\solr\home目录下之前的任务目录及文件不变

注:D:\solr\home目录为D:\solr\apache-solr-3.3.0\example\solr


3、建立两个索引数据存放目录
D:\solr\home\core0\data
D:\solr\home\core1\data

4、修改其中一个索引如CORE1
修改solrconfig.xml为如下代码
【注 需要加入 lib 标签主要是因为DataImportHandler为报错,这可能是官方的BUG】




LUCENE_33



  

  

  

  

  

   

  



   


  



  

  

   solr

  

   

                    

                          data-config.xml   

                  





LUCENE_33

  


  

  

  

  

  

   

  


  

   

  

  

  

  

  

  

   solr

  

   

         

         data-config.xml   

         



最后运行 http://localhost:8080/solr/core1/admin/

  
  
2.5. 全自动近实时全文检索(增量索引)
  
  每次检索都检索至上次建立的索引基础上,所以当有新增数据时,不经过处理是无法检索到新增数据的。这时需要进行相关配置来实现实时检索
  
  思路:设置两个数据源和两个索引,对很少更新或根本不更新的数据建立主索引,而对新增文档建立增量索引
  
  主要是修改data-config.xml数据源
  
  
  
  
  
  
  
  
  注意数据库相关表的创建
  如本例中 solr_articles表中有 last_index_time(timestamp)字段,每当增加或者更新了值都应修改last_index_time的值,以便增量索引能更新到
  有问题请即时查看TOMCAT的LOG日志文件
  运行:http://192.168.171.129:8983/solr/dataimport?command=delta-import
  如果运行后未达到你的预期,请查看dataimport.properties文件的日期,并组合新SQL语句查询来调整问题
  
  
  
  做好主索引和增量索引后就需要建立两个定时任务(linux crontab)
  
  一个每五分钟的增量索引定时任务:每五分钟更新一次增量索引,同时合并主索引和增量索引以此保证能检索出五分钟以前的所有数据
  
  一个每天凌晨两点的主索引更新,同时清除增量索引,以此来保证主索引的效率,同时减少数据的重复性
  
  
  
2.6. 分布式索引
  solr 分布式其实是分发,这概念像Mysql的复制。所有的索引的改变都在主服务器里,所有的查询都在从服务里。从服务器不断地(定时)从主服务器拉内容,以保持数据一致。
  参考:http://chenlb.blogjava.net/archive/2008/07/04/212398.html
  
  
2.7. 解决数据准确性
  
  要想搜索出的数据准确你可以通过以下几种方式来解决
  1、  建立自己的分词库
  2、  在对数据进行了更新,添加,删除时通过DOCUMENT来更新索引
  3、  采用增量索引,进行定时更新
  
2.8. SOLR分词的配置
  参考本文档的LINUX安装SOLR
  
2.9. SOLR的PHP客户端
  使用PHP访问SOLR中的索引数据
  参考:http://code.google.com/p/solr-php-client/
  一个简单的例子:http://code.google.com/p/solr-php-client/wiki/ExampleUsage
  
  注:与用C写的SPHINX搜索引擎相似
  
3.   其它参考
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-87557-1-1.html 上篇帖子: 开源搜索引擎Solr的快速搭建及集成到企业门户最佳实施方案--转载 下篇帖子: 利用SOLR搭建企业搜索平台 之五(solrj)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表