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

[经验分享] Solr 搭建搜索服务器

[复制链接]

尚未签到

发表于 2015-7-18 07:39:13 | 显示全部楼层 |阅读模式
Solr已经发布3.5版本了,同时它是基于Lucene 3.5的。我们在基于Solr进行二次开发之前,首先要搭建起一个搜索服务器,在熟悉Solr的基本功能的基础上,可以根据实际应用的需要进行个性化定制开发。因为Solr提供了一种插件机制,我们可以根据自己的需要进行定制,然后在Solr的配置文件中(solrconfig.xml)进行配置即可达到预期的要求。在Solr的发行包中给出了一个配置的例子,我们可以直接将其发布到Web容器中,通过浏览器访问来进行测试,具体如何配置,下面根据从易到难的方式,对每种方式进行详细的介绍。


  

准备工作
  
  


  • 下载Solr 3.5发行包(http://lucene.apache.org/solr,apache-solr-3.5.0-src.tgz和apache-solr-3.5.0.tgz),并解压缩到文件系统中;
  • 下载Lucene 3.5发行包(http://lucene.apache.org/solr,lucene-3.5.0-src.tgz和lucene-3.5.0.tgz),并解压缩到文件系统中;
  • 安装配置Web容器,我使用的apache-tomcat-6.0.32。
  
  

第一种方式:基于WAR包搭建
  
  这种方式,我们是直接使用Solr发行包给定的WAR包,一般来说通过它快速了解Solr是很有用的,而对于满足实际需要的开发还远远不够。
  按照下面的步骤,进行安装、配置、验证:
  第1步:复制Solr发行包中配置示范文件(/example/solr文件夹)到tomcat/bin目录,如/home/tomcat/bin。按照solr的要求,需要指定solr-home的路径,如不指定,默认当前运行目录(tomcat/bin),于是本文为了简单,直接把solrconf放到bin目录下
  

另外,如果在solrconfig.xml中没有指定索引目录配置,则默认会生成apache-tomcat-6.0.32\conf\multicore\data\index目录,该目录下面存储索引文件。  
  第2步:将apache-solr-3.5.0\apache-solr-3.5.0\dist下面的apache-solr-3.5.0.war拷贝到apache-tomcat-6.0.32\webapps目录下面;
  这个不用过多解释,就是通过使用一个Web归档文件(WAR)来部署一个Web应用,我们的应用就是Solr搜索应用程序。
  第3步:新增solr.xml在{$TOMCAT}/conf/Catalina/localhost/下。TOMCAT在启动时将自动加载该CONTEXT。 docBase应设置为solr war包存放位置,例如/home/apache-solor-3.5.0/example/webapp/solr.war
     solr/home的值应设置为你规划存放的索引根路径,例如/web/solr/。该目录在以下将称为{$SOLR_HOME}






Xml代码 http://martin3000.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf


   
  
   
  
  第4步:设置Solr的字符集;
  默认Solr使用了UTF-8字符集编码,如果你的Tomcat不是的话,在执行中文搜索的时候可能会出现乱码。如果你的Tomcat默认8080端口请求字符集就是UTF-8,并且想使用这个默认的端口提供搜索服务,则可以修改apache-tomcat-6.0.32\conf\server.xml文件的内容,如下所示:
  
  
  
  

上面我们增加了一个URIEncoding="UTF-8"的配置。  
  如果想使用一个新的未被占用的端口,则可以在apache-tomcat-6.0.32\conf\server.xml中增加一个配置,例如使用8888端口,配置内容如下所示:
  
  第5步:分词安装
  中文分词器安装
  中文分词在solr里面是没有默认开启的,需要我们自己配置一个中文分词器。目前可用的分词器有smartcn,IK,jeasy,庖丁。其实主要是两种,一种是基于中科院ICTCLAS的隐式马尔科夫HMM算法的中文分词器,如smartcn,ictclas4j,优点是分词准确度高,缺点是不能使用用户自定义词库;另一种是基于最大匹配的分词器,如IK ,Jeasy,庖丁,优点是可以自定义词库,增加新词,缺点是分出来的垃圾词较多。各有优缺点,看应用场合自己衡量选择吧。
  下面给出两种分词器的安装方法,任选其一即可,推荐第一中,因为smartcn就在solr发行包的contrib/analysis-extras/lucene-libs/下,就是lucene-smartcn-3.5.0.jar
  5.1 smartcn 分词器的安装
  将contrib/analysis-extras/lucene-libs/lucene-smartcn-3.5.0.jar复制到/tomcat/webapps/solr/WEB-INF/lib,
  打开/tomcat/bin/solr/conf/scheme.xml,编辑text字段类型如下,添加以下代码到shema中的相应位置,就是找到fieldType定义的那一段,在下面多添加这一段就好啦
  
  






Xml代码 http://martin3000.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf




  
  
  
  
  
  5.2 IK 分词器的安装   IKAnalyer3.2.8 下载
  将IKAnalyzer3.2.5发行包解压,复制IKAnalyzer3.2.8Stable.jar到Solr的lib中,如/home/tomcat/webapps/solr/WEB-INF/lib,复制配置文件IKAnalyzer.cfg.xml和ext_stopword.dic到tomcat/bin中,如/home/tomcat/bin。同样,到/tomcat/webapps/solr/WEB-INF/lib,
  打开/tomcat/bin/solr/conf/scheme.xml,编辑text字段类型如下,添加到schema中
  






Xml代码 http://martin3000.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf


   
   
  
  
   第6步:优化
  
  配置solrconfig.xml,用来配置Solr的一些系统属性,比较重要的一个就是可以通过更改其中的dataDir属性来指定索引文件的存放 位置,对于有大数据量的情况下还要进行自动commit操作配置,以下设置为当内存索引量达到20W条时自动进行往磁盘写操作,以免堆溢出,这也是解决单 个入库xml文件最好不要超过30M的有效方法:
  






Xml代码 http://clayz.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf


  
200000  
  

  
  第7步:验证
  
  Solr在 Tomcat里,所以启动Tomcat即可,建议初期用bootstrap.jar,方便发现配置中的错误,如
  进入目录/home/tomcat/bin ,然后敲入 java -jar bootstrap.jar即可运行,不报错的话就可以正常访问了
  http://127.0.0.1:8983/solr/
  
  下面再看下分词器有没配置成功
  
  http://127.0.0.1:8983/solr/admin/analysis.jsp
  
  
  


  
  
  
  
  输入:  solr中文分词器
  
  如果分词的结果显示  solr|中文|分词|器   
  
  恭喜你,分词器配置成功,solr环境搭建完成了
  
  

第二种方式:基于jar包搭建
  
  这种方式,我们不再使用Solr默认提供,并对我们非常透明的WAR包来搭建,而是根据Solr发行包中的相关内容来搭建,更确切地说,我们把Solr在一个开发工具上搭建起来,暂且不考虑源码层面的内容。我比较习惯使用MyEclipse,我使用了MyEclipse Enterprise Workbench 8.0集成开发环境。
  遵循下面的步骤,就可以实现:
  


  • 创建一个Web Project,工程名称为solr35;
  • 将apache-solr-3.5.0-src\apache-solr-3.5.0\solr\example\multicore目录,拷贝到工程solr35下面;
  • 将apache-solr-3.5.0\apache-solr-3.5.0\dist以及solrj-lib目录中jar文件,拷贝到工程solr35\WebRoot\WEB-INF\lib下面;
  • 将apache-solr-3.5.0-src\apache-solr-3.5.0\solr\lib目录中jar文件,拷贝到工程solr35\WebRoot\WEB-INF\lib下面;
  • 将lucene-3.5.0\lucene-3.5.0\lucene-core-3.5.0.jar、lucene-3.5.0\lucene-3.5.0\contrib\spatial\lucene-spatial-3.5.0.jar、lucene-3.5.0\lucene-3.5.0\contrib\highlighter\lucene-highlighter-3.5.0.jar这三个文件,拷贝到solr35\WebRoot\WEB-INF\lib下面;
  • 将apache-solr-3.5.0-src\apache-solr-3.5.0\solr\webapp\web目录,拷贝到solr35\WebRoot,并覆盖原来的全部内容;
  • 修改solr35\WebRoot\WEB-INF\web.xml文件,增加如下内容:




    solr/home
    E:\Develop\myeclipse\workspace\solr35\multicore
    java.lang.String

  

实际上,就是指定了Web容器启动后,Solr加载实例的相关配置和索引数据的目录。  
  另外,这样是直接在web.xml中进行了硬编码配置,如果solr/home变化了,每次都需要修改web.xml文件。还有一种方式是,直接增加Web容器的启动选项来指定,如下所示:
  -Dsolr.solr.home=E:\Develop\myeclipse\workspace\solr35\multicore

这样,配置就更加灵活了,非常方便。  
  通过上面的配置,可以启动Tomcat服务器了,并通过访问http://localhost:8080/solr35来进行验证。
  
  

第三种方式:基于源码搭建

  
  基于源码搭建的好处的就是,我们在开发过程中可以方便地进行调试跟踪,这样也能够便于更深入地了解Solr框架的执行机制。Solr是基于Lucene这个开源搜索引擎库开发的框架,通过了解Solr的源代码,你可以更深入地熟悉如何在Lucene之上构建适合自己的搜索应用,甚至你完全可以将Solr改造成自己需要的应用程序。一般来说,我们使用Solr搭建搜索服务器的适合,完全可以不需要熟悉Lucene是怎么样实现索引和全文检索的,但是在Solr上进行开发调试,如调试搜索的相关度时,就需要对Lucene有一定的了解,才能在调优的过程中事半功倍。
  基于源码的搭建,我采用了一种Lucene和Solr的源代码都可以进行修改,即将Lucene和Solr的代码导入的开发环境中。具体如何导入,因为代码都是开源的,你可以使用任何方法实现,不再累述。这里,我们简单说一下,我将solr和Lucene分别导入到了两个工程中:Lucene Java Project、Solr Web Project。我把工程的.classpath文件粘贴一下,以供参考:
  Lucene Java Project的.classpath文件内容如下:





  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  

Solr Web Project的.classpath文件内容如下:




  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  

  



搭建起来开发环境,你可以更加深入的学习Solr了。  
  转自:http://blog.iyunv.com/shirdrn/article/details/7050075

运维网声明 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-87815-1-1.html 上篇帖子: Solr入门之(1)前言与概述 下篇帖子: Cloudera Manager启动Solr时报错:Solr.xml not found in zookeeper
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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