首页 22_开源企业搜索引擎Solr的应用教程

22_开源企业搜索引擎Solr的应用教程

举报
开通vip

22_开源企业搜索引擎Solr的应用教程开源企业搜索引擎SOLR的应用教程201010目录41概述41.1企业搜索引擎方案选型41.2Solr的特性41.2.1Solr使用Lucn并且进行了扩展51.2.2Schma模式)51.2.3查询51.2.4核心51.2.5缓存61.2.6复制61.2.7管理接口61.3Solr服务原理61.3.1索引71.3.2搜索81.4源码结构81.4.1目录结构说明91.4.2Solrhom说明101.4.3solr的各包的说明111.5版本说明111.5.11.3版本121.5.21.4版本131.6分布式和复制Sol...

22_开源企业搜索引擎Solr的应用教程
开源企业搜索引擎SOLR的应用教程201010目录41概述41.1企业搜索引擎 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 选型41.2Solr的特性41.2.1Solr使用Lucn并且进行了扩展51.2.2Schma模式)51.2.3查询51.2.4核心51.2.5缓存61.2.6复制61.2.7管理接口61.3Solr服务原理61.3.1索引71.3.2搜索81.4源码结构81.4.1目录结构说明91.4.2Solrhom说明101.4.3solr的各包的说明111.5版本说明111.5.11.3版本121.5.21.4版本131.6分布式和复制Solr 架构 酒店人事架构图下载公司架构图下载企业应用架构模式pdf监理组织架构图免费下载银行管理与it架构pdf 132Solr的安装与配置132.1在Tomcat下Solr安装132.1.1安装准备142.1.2安装过程152.1.3验证安装152.2中文分词配置152.2.1mmsg4j192.2.2paoding222.3多核MultiCor)配置222.3.1MultiCor的配置方法232.3.2为何使用多cor?232.4配置文件说明242.4.1schma.xml252.4.2solrconfig.xml293Solr的应用293.1SOLR应用概述293.1.1Solr的应用模式303.1.2SOLR的使用过程说明303.2一个简单的例子303.2.1SolrSchma 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 303.2.2构建索引313.2.3搜索测试323.3搜索引擎的规划设计323.3.1定义业务模型343.3.2定制索引服务343.3.3定制搜索服务343.4搜索引擎配置343.4.1SolrSchma设计(如何定制索引的结构?)363.5如何进行索引操作?363.5.1基本索引操作373.5.2批量索引操作393.6如何进行搜索393.6.1搜索语法423.6.2排序423.6.3字段增加权重423.6.4Solr分词器、过滤器、 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 器463.6.5Solr高亮使用464SolrJ的用法464.1搜索接口的调用实例474.2Solrj的使用说明474.2.1AddingDatatoSolr494.2.2DirctlyaddingPOJOstoSolr514.2.3RadingDatafromSolr514.3创建查询524.4使用SolrJ创建索引534.5Solrj包的结构说明534.5.1CommonsHttpSolrSrr534.5.2SttingXMLRsponsParsr534.5.3ChangingothrConnctionSttings544.5.4EmbdddSolrSrr545Solr的实际应用测试报告545.1线下压力测试报告545.2线上环境运行报告556solr性能调优556.1SchmaDsignConsidrations556.1.1indxdfilds556.1.2stordfilds556.2ConfigurationConsidrations556.2.1mrgFactor566.2.2mrgFactorTradoffs566.3CachautoWarmCountConsidrations566.4Cachhitrat缓存命中率)566.5ExplicitWarmingofSortFilds566.6OptimizationConsidrations566.7UpdatsandCommitFrquncyTradoffs576.8QuryRsponsComprssion576.9EmbdddsHTTPPost576.10RAMUsagConsidrations内存方面的考虑)576.10.1OutOfMmoryErrors576.10.2MmoryallocatdtothJaaVM587FAQ587.1出现乱码或者查不到结果的排查方法:1概述1.1企业搜索引擎方案选型由于搜索引擎功能在门户社区中对提高用户体验有着重在门户社区中涉及大量需要搜索引擎的功能需求,目前在实现搜索引擎的方案上有集中方案可供选择:1)基于Lucn自己进行封装实现站内搜索。工作量及扩展性都较大,不采用。2)调用Googl、Baidu的API实现站内搜索。同第三方搜索引擎绑定太死,无法满足后期业务扩展需要,暂时不采用。3)基于Compass+Lucn实现站内搜索。适合于对数据库驱动的应用数据进行索引,尤其是替代传统的lik‘%xprssion%’来实现对archar或clob等字段的索引,对于实现站内搜索是一种值得采纳的方案。但在分布式处理、接口封装上尚需要自己进行一定程度的封装。4)基于Solr实现站内搜索。封装及扩展性较好,提供了较为完备的解决方案,因此在门户社区中采用此方案。基于以述的几种方案的综合分析,对于我们公司的搜索引擎方案,采用solr来实现比较合适。1.2Solr的特性ApachSolr是一个开源的搜索服务器,Solr使用Jaa语言开发,主要基于HTTP和ApachLucn实现。定制Solr索引的实现方法很简单,用POST方法向Solr服务器发送一个描述所有Fild及其内容的XML文档就可以了。定制搜索的时候只需要发送HTTPGET请求即可,然后对Solr返的信息进行重新布局,以产生利于用户理解的页面内容布局。Solr1.3版本开始支持从数据库通过JDBC)、RSS提要、Wb页面和文件中导入数据,但是不直接支持从二进制文件格式中提取内容,比如MSOffic、AdobPDF或其他专有格式。更重要的是,Solr创建的索引与Lucn搜索引擎库完全兼容。通过对Solr进行适当的配置,某些情况下可能需要进行编码,Solr可以阅读和使用构建到其他Lucn应用程序中的索引。此外,很多Lucn工具如Nutch、Luk)也可以使用Solr创建的索引Solr的特性包括:·高级的全文搜索功能·专为高通量的网络流量进行的优化·基于开放接口XML和HTTP)的 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 ·综合的HTML管理界面·可伸缩性-能够有效地复制到另外一个Solr搜索服务器·使用XML配置达到灵活性和适配性·可扩展的插件体系1.2.1Solr使用Lucn并且进行了扩展·一个真正的拥有动态域(DynamicFild)和唯一键(UniquKy)的数据模式(DataSchma)·对Lucn查询语言的强大扩展!·支持对结果进行动态的分组和过滤·高级的,可配置的文本分析·高度可配置和可扩展的缓存机制·性能优化·支持通过XML进行外部配置·拥有一个管理界面·可监控的日志·支持高速增量式更新(FastincrmntalUpdats)和快照发布(SnapshotDistribution)1.2.2Schma模式)·定义域类型和文档的域·能够驱动智能处理·声明式的Lucn分析器规范·动态域能够随时增加域·拷贝域功能允许对一个域进行多种方式的索引,或者将多个域联合成一个可搜索的域·显式类型能够减少对域类型的猜测·能够使用外部的基于文件的终止词列表,同义词列表和保护词列表的配置1.2.3查询·拥有可配置响应格式XMLXSLT,JSON,Python,Ruby)的HTTP接口·高亮的上下文搜索结果·基于域值和显式查询的片段式搜索FactdSarch)·对查询语言增加了排序规范·常量的打分范围(Constantscoringrang)和前缀式查询-没有idf,coord,或者lngthNorm因子,对查询匹配的词没有数量限制·函数查询(FunctionQury)通过关于一个域的数值或顺序的函数对打分进行影响·性能优化1.2.4核心·可插拔的查询句柄QuryHandlr)和可扩展的XML数据格式·使用唯一键的域能够增强文档唯一性·能够高效地进行批量更新和删除·用户可配置的文档索引变化触发器命令)·并发控制的搜索器·能够正确处理数字类型,从而能够进行排序和范围搜索·能够控制缺失排序域的文档·支持搜索结果的动态分组1.2.5缓存·可配置的查询结果,过滤器,和文档缓存实例·可插拔的缓存实现·后台缓存热启:当一个新的搜索器被打开时,可配置的搜索将它热启,避免第一个结果慢下来,当热启时,当前搜索器处理目前的请求???)。·后台自动热启:当前搜索器缓存中最常访问的项目在新的搜索器中再次生成,能够在索引器和搜索器变化的时候高速缓存常查询的结果·快速和小的过滤器实现·支持自动热启的用户级别的缓存1.2.6复制·能够将使用rsync传输时改变的索引部分有效的发布·使用拉策略(PullStratgy)来简化增加搜索器·可配置的发布间隔能够允许对时间线和缓存使用进行权衡选择1.2.7管理接口·能够对缓存使用,更新和查询进行综合统计·文本分析调试器,能够显示每个分析器每个阶段的结果·基于WEB的查询和调试输出:解析查询输出,Lucn的xplain方法细节,能够解释为何某个文档打分低,被排除在结果中等等1.3Solr服务原理Solr对外提供标准的http接口来实现对数据的索引的增加、删除、修改、查询。在Solr中,用户通过向部署在srlt容器中的SolrWb应用程序发送HTTP请求来启动索引和搜索。Solr接受请求,确定要使用的适当SolrRqustHandlr,然后处理请求。通过HTTP以同样的方式返响应。默认配置返Solr的标准XML响应,也可以配置Solr的备用响应格式。1.3.1索引可以向Solr索引srlt传递四个不同的索引请求:1)addupdat允许向Solr添加文档或更新文档。直到提交后才能搜索到这些添加和更新。2)commit告诉Solr,应该使上次提交以来所做的所有更改都可以搜索到。3)optimiz重构Lucn的文件以改进搜索性能。索引完成后执行一下优化通常比较好。如果更新比较频繁,则应该在使用率较低的时候安排优化。一个索引无需优化也可以正常地运行。优化是一个耗时较多的过程。4)dlt可以通过id或查询来指定。按id删除将删除具有指定id的文档;按查询删除将删除查询返的所有文档。要实现添加文档索引则只需要调用搜索接口以HTTPPOST的方式提交XML报文。(索引接口:http:192.168.10.85:18080solrupdat),下面是添加文档的示例报文:注:多核心时为这个地址http:192.168.10.85:18080solrcor0updat<add><doc><fildnam=id>TWINX20483200PRO<fild><fildnam=nam>CORSAIRXMS2GB(2x1GB)184PinDDRSDRAMUnbuffrdDDR400(PC3200)DualChannlKitSystmMmoryRtail<fild><fildnam=manu>CorsairMicrosystmsInc.<fild><fildnam=cat>lctronics<fild><fildnam=cat>mmory<fild><fildnam=faturs>CASlatncy2,2336timing,2.75,unbuffrd,hatspradr<fild><fildnam=pric>185<fild><fildnam=popularity>5<fild><fildnam=inStock>tru<fild><doc><doc><fildnam=id>VS1GB400C3<fild><fildnam=nam>CORSAIRValuSlct1GB184PinDDRSDRAMUnbuffrdDDR400(PC3200)SystmMmoryRtail<fild><fildnam=manu>CorsairMicrosystmsInc.<fild><fildnam=cat>lctronics<fild><fildnam=cat>mmory<fild><fildnam=pric>74.99<fild><fildnam=popularity>7<fild><fildnam=inStock>tru<fild><doc><add>1.3.2搜索要实现搜索则只需要调用搜索接口发送HTTPGET,示例: http:192.168.10.85:18080solrslct?indnt=onrsion=2.2q=solrstart=0rows=10fl=%2Cscorqt=standardwt=standard注:多核心时为这个地址http:192.168.10.85:18080solrcor0slct示例中,查询词“ipad”的请求被提交,要求返10个结果。想知道更多有关各种可选查询选项的信息,请参看下文的“搜索语法”部分。返的搜索结果报文:<rspons><lstnam=rsponsHadr><intnam=status>0<int><intnam=QTim>6<int><lstnam=params><strnam=rows>10<str><strnam=start>0<str><strnam=fl>,scor<str><strnam=hl>tru<str><strnam=q>contnt:factdbrowsing<str><lst><lst><rsultnam=rsponsnumFound=1start=0maxScor=1.058217><doc><floatnam=scor>1.058217<float><arrnam=all><str>http:localhostmyBlogsolrrocksagain.html<str><str>SolrisGrat<str><str>solr,lucn,ntrpris,sarch,gratnss<str><str>Solrhassomrallygratfaturs,likfactdbrowsingandrplication<str><arr><arrnam=contnt><str>Solrhassomrallygratfaturs,likfactdbrowsingandrplication<str><arr><datnam=crationDat>20070107T05:04:00.000Z<dat><arrnam=kywords><str>solr,lucn,ntrpris,sarch,gratnss<str><arr><intnam=rating>8<int><strnam=titl>SolrisGrat<str><strnam=url>http:localhostmyBlogsolrrocksagain.html<str><doc><rsult><lstnam=highlighting><lstnam=http:localhostmyBlogsolrrocksagain.html><arrnam=contnt><str>Solrhassomrallygratfaturs,lik<m>factd<m><m>browsing<m>andrplication<str><arr><lst><lst><rspons>1.4源码结构1.4.1目录结构说明我们下载的Solr包后,进入Solr所在的目录,我们可以看到以下几个目录:build、clint、dist、xampl、lib、sit、src。下面分别对其进行介绍。1)build:该目录是在antbuild过程中生成的,其中包含了未被打包成jar或是war的class文件以及一些文档文件。2)clint:该目录包含了特定语言的Solr客户端API,使得使用其他语言的用户能通过HTTP用XML与Solr进行通话。现在该目录里面虽然包含jaascript、python、ruby三个子目录,但是到目前为止只包含一部分的ruby的代码,其他语言仍是空的。另外,Solr的Jaa客户端称为SolrJ,其代码位于srcsolrj目录下面。在之后的文章中我会详细介绍Solr客户端的使用。3)dist:该目录包含build过程中产生的war和jar文件,以及相关的依赖文件。还记得上一篇文章中,我们在build1.4版本的Solr源代码后需要部署xampl吗?其实就是将该目录下面的apachsolr1.4.war部署到Jtty上面去,并重命名为solr.war。4)xampl:这个目录实际上是Jtty的安装目录。其中包含了一些样例数据和一些Solr的配置。其中一些子目录也比较重要,这里也对它们稍作介绍。·xampltc:该目录包含了Jtty的配置,在这里我们可以将Jtty的默认端口从8983改为80端口。·将其中的8983端口换成80端口。注意更改端口后启动Jtty可能会提示你没有权限,你需要使用sudojaajarstart.jar来运行。·xamplmulticor:该目录包含了在Solr的multicor中设置的多个hom目录。在之后的文章中我会对其进行介绍。·xamplsolr:该目录是一个包含了默认配置信息的Solr的hom目录。详见下面的“solrhom说明”·xamplwbapps:Jtty的wbapps目录,该目录通常用来放置Jaa的Wb应用程序。在Solr中,前面提到的solr.war文件就部署在这里。5)lib:该目录包含了所有Solr的API所依赖的库文件。其中包括Lucn,Apachcommonsutilitis和用来处理XML的Stax库。6)sit:该目录仅仅包含了Solr的官网的网页内容,以及一些教程的PDF文档。7)src:该目录包含了Solr项目的整个源代码。这里对其各个子目录也做相应的介绍。·srcjaa:该目录存放的是Solr使用Jaa编写的源代码。·srcscripts:该目录存放的是配置Solr服务器的UnixBashShll脚本,在后面介绍多服务器配置中将会有重要的作用。·srcsolrj:前面提到过该目录存放的是Solr的Jaa版本的客户端代码。·srctst:该目录存放的是测试程序的源代码和测试文件。·srcwbapp:该目录存放的是管理Solr的Wb页面,包括Srlt和JSP文件,其构成了前面提到的WAR文件。管理Solr的JSP页面在wbadmin目录下面,如果你有兴趣折腾Solr可以找到相应的JSP的页面对其进行设置1.4.2Solrhom说明所谓的Solrhom目录实际上是一个运行的Solr实例所对应的配置和数据Lucn索引)。在上一篇文章中我提到过在Solr的xamplsolr目录就是一个Solr用做示例的默认配置hom目录。实际上xamplmulticor也是一个合法的Solrhom目录,只不过是用来做multcor设置的。那么我们来看看xamplsolr这个目录里面都有些什么。xamplsolr目录下主要有以下一些目录和文件:1)bin:如果你需要对Solr进行更高级的配置,该目录建议用来存放Solr的复制脚本。2)conf:该目录下面包含了各种配置文件,下面列出了两个最为重要的配置文件。其余的.txt和.xml文件被这两个文件所引用,如用来对文本进行特殊的处理。·confschma.xml:该文件是索引的schma,包含了域类型的定义以及相关联的analyzr链。·confsolrconfig.xml:该文件是Solr的主配置文件。·confxslt:该目录包含了各种XSLT文件,能将Solr的查询响应转换成不同的格式,如:AtomRSS等。3)data:包含了Lucn的二进制索引文件。4)lib:该目录是可选的。用来放置附加的JaaJAR文件,Solr在启动时会自动加载该目录下的JAR文件。这就使得用户可以对Solr的发布版本solr.war)进行扩展。如果你的扩展并不对Solr本身进行修改,那么就可以将你的修改部署到JAR文件中放到这里。Solr是如何找到运行所需要的hom目录的呢?Solr首先检查名为solr.solr.hom的Jaa系统属性,有几种不同的方式来设置该Jaa系统属性。一种不管你使用什么样的Jaa应用服务器或Srlt引擎都通用的方法是在调用Jaa的命令行中进行设置。所以,你可以在启动Jtty的时候显式地指定Solr的hom目录jaaDsolr.solr.hom=solrjarstart.jar。另一种通用的方法是使用JNDI,将hom目录绑定到jaa:compnsolrhom。并向srcwbappwbWEBINFwb.xml添加以下一段代码:1<nntry>2<nntrynam>solrhom<nntrynam>3<nntryalu>solr<nntryalu>4<nntrytyp>jaa.lang.String<nntrytyp>5<nntry>实际上这段XML在wb.xml文件中已经存在,你只需要把原来注释掉的xml取消注释,添加你所要指向的hom目录即可。因为修改了wb.xml文件,所以你需要运行antdistwar来重新打包之后再部署WAR文件。最后,如果Solr的hom目录既没有通过Jaa系统属性指定也没有通过JNDI指定,那么他将默认指向solr。在产品环境中,我们必须设置Solr的hom目录而不是让其默认指向solr。而且应该使用绝对路径,而不是相对路径,因为你有可能从不同的目录下面启动应用服务器。注:Jtty是一个开源的srlt容器,它为基于Jaa的wb内容,例如JSP和srlt提供运行环境。Jtty是使用Jaa语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jtty容器实例化成一个对象,可以迅速为一些独立运行standalon)的Jaa应用提供网络和wb连接。1.4.3solr的各包的说明分析ApachSolr的各个包,力图详细地分析Solr的设计和架构。ApachSolr由12个包组成,如下:1.org.apach.solr.analysis2.org.apach.solr.cor3.org.apach.solr.rqust4.org.apach.solr.schma5.org.apach.solr.sarch6.org.apach.solr.sarch.function7.org.apach.solr.srlt8.org.apach.solr.tst9.org.apach.solr.updat10.org.apach.solr.util11.org.apach.solr.util.tst12.org.apach.solr.util.xlst我们先从使用者的角度出发,最先看到的当然是srlt,因为Solr本身是个独立的网络应用程序,需要在Srlt容器中运行来提供服务,所以srlt是用户接触的最外层。我们看看org.apach.solr.srlt包。这个包很简单,只有两个类:SolrSrlt和SolrUpdatSrlt.我们很容易从类名中猜出这两个类的用途。SolrSrlt类继承HttpSrlt类,只有四个方法:·init()·dstroy()·doGt()·doPost()SolrSrlt类中除了普通的Jaa类对象包括Srlt相关的)外,有四个Solr本身的类,还有一个Solr本身的异常。其中两个类和一个异常属于org.apach.solr.cor包,两个类属于org.apach.solr.rqust包。属于cor包的有:·Config:·SolrCor:属于rqust包的有:·SolrQuryRspons:·QuryRsponsWritr:分析一下这个SolrSrlt类。首先srlt会调用init()方法进行初始化:通过Contxt查找jaa:compnsolrhom来确定Solr的主目录hom),接着调用Config.stInstancDir(hom)方法设置这个实例的目录。然后通过SolrCor.gtSolrCor()来获得一个SolrCor实例。dstroy()方法将会在Srlt对象销毁时调用,仅仅调用cor.clos()关闭SolrCor实例。当用户请求进来时doPost()简单地将任务交给doGt()完成,主要的任务由doGt()完成。分析一下doGt()方法:1)使用SolrCor和doGt()参数rqust生成一个SolrSrltRqust对象(注意:这个SolrSrltRqust类不是公开类,位于org.apach.solr.srlt包中,继承了SolrQuryRqustBas类,仅仅接受SolrCor和HttpSrltRqust对象作为参数)2)然后SolrCor执行xcut()方法参数为SolrSrltRqust和SolrQuryRspons)由此可见,真正的处理核心是SolrCor的xcut方法1.5版本说明1.5.11.3版本Solr的1.3版本以ApachLucn2.3版本的巨大性能提升为基础,并增加了一个新的、向后兼容的、即插即用组件架构。该架构使开发人员踊跃创建可以进一步增强Solr的组件。例如,1.3版本就包含能够实现以下功能的组件:·“您是不是要找”拼写检查·查找“类似的”Documnt·根据编辑输入又称付费排序)覆盖搜索结果另外,查询解析、搜索、分类以及调试这样的现有功能也被组件化了。现在,您可以通过组合这些组件来自定义创建SolrRqustHandlr。最后,Solr还增加了直接为数据库内容创建索引的功能,并且通过分布式搜索来支持庞大的系统,这一点对很多企业都很重要。Solr1.3发生了很大的变化。它有很多新的特性,比如拼写检查、数据导入、编辑排序和分布式搜索。此外,还学习了Solr的增强功能,包括一个更新、更快的Lucn版本。Solr有许多地方改变了,也有许多地方没有改变。Solr仍然是一个可靠的、可行的、支持良好的搜索服务器,并且已经可以部署到企业中。现在,Solr开发人员开始研究添加文档聚合、更多的分析选项、Windows友好的复制以及复制文档检测等特性。1.5.21.4版本Solr1.4.1发布了!此版本是一个bug修复版,同时也将Lucn升级到了Lucn2.9.3。作为Jaa开源世界最为著名的全文检索工具来说,Lucn名气之大是在是可想而知了。而Solr是基于Lucn的一个企业级全文检索工具实现。Solr底层基于Lucn,而操作完全基于wb方式Solr同时提供检索高亮标记,动态集群,数据库整合,多种文档支持的特性,因此是用来制作企业级全文检索的一个良好的选择。Solr完全采用Jaa编写,因此具有跨平台的能力,可以运行在Linux,Unix等多种支持Jaa的平台上。而Solr既可以作为独立应用部署在应用程序服务器上例如Tomcat),也可以通过的REST和JSONapi来与现有的应用进行整合,因此使用起来十分灵活方便。1.6分布式和复制Solr架构图1注意,图1中输入的请求可以进入任何一个复制的片中,因为它们是功能齐全的Solr实例。然后,检索节点会将请求发送到其他片。这些请求仅仅是普通的Solr请求。要将请求提交到Solr服务器并分发请求,需要将shards参数添加到请求,比如:http:localhost:8983solrslct?shards=localhost:8983solr,localhost:7574solrq=ipod+solr在这个例子中,我假定在本地主机上运行了两个Solr服务器它不是真正的分布式的;它适合于这里的论述,但不能用于您的设置),主服务器在端口8983上,从服务器在端口7574上。输入的请求进入端口8983上的实例,然后它将请求发送到片式服务器上。应用程序很可能将shards参数值设置成solrconfig.xml文件中的SolrRqustHandlr的默认配置的一部分,这样就不需要在每次查询时都传入所有片式服务器的名称了。2Solr的安装与配置2.1在Tomcat下Solr安装下面以Linux下安装配置Solr进行说明,windows与此类似。2.1.1安装准备1)下载tomcat6.0.20:http:tomcat.apach.org2)tomcat调优:调优tomcat加大内存和连接数·MaxThrad500·MinSparThrad25·MaxSparThrad75·Xmx1024M3)操作系统网络参数优化用做测试的各台服务器,均在tcsysctl.conf配置文件中增加如下内核参数:nt.ip4.tcpsyncookis=1nt.ip4.tcptwrus=1nt.ip4.tcptwrcycl=1nt.ip4.tcpfintimout=54)下载solr下载地址:http:apach.toak.comlucnsolr1.4.1详情请见:http:wiki.apach.orgsolrSolr1.45)下载分词器:下载地址:http:cod.googl.compmmsg4j6)下载词库:http:cod.googl.compmmsg4jdownloadsdtail?nam=data.zipcan=2q=2.1.2安装过程1)安装tomcat6安装完tomcat后修改.confsrr.xml <Connctorport=8080protocol=HTTP1.1connctionTimout=20000rdirctPort=8443URIEncoding=UTF8>注:如果没有设置URIEncoding=UTF8,在提交查询的slct的url会出现乱码,当然也就查不到了。2)将下载的solr包下面的dist文件夹中的apachsolr1.4.1.war拷贝到tomcat的wbapps并且改名为solr.war一般情况下会自动生成相应的文件夹。3)新建optsolrtomcatsolr文件夹,把下载的solr包中的xamplsolr文件夹下面的所有文件放入到optsolrtomcatsolr里面。4)最后一步配置添加solr.hom环境变量,可以有二种方式两种取其一即可):a)基于环境变量linux在当前用户的环境变量中.bashprofil)或在.bincatalina.sh中添加如下环境变量: xportJAVAOPTS=$JAVAOPTSDsolr.solr.hom=optsolrtomcatsolrb)基于JNDI在tomcat的conf文件夹建立Catalina文件夹,然后在Catalina文件夹中在建立localhost文件夹,在该文件夹下面建立solr.xml,Xml代码:<ContxtdocBas=usrlocaltomcat6wbappssolr.wardbug=0crossContxt=tru><Enironmntnam=solrhomtyp=jaa.lang.Stringalu=optsolrtomcatsolrorrid=tru><Contxt>注:如果没有设定solr.solr.hom环境变量或JNDI的情况下,Solr查找.solr,因此在启动时候需要切换到optsolrtomcat2.1.3验证安装访问solr管理界面http:ip:portsolr1)打开管理后台打开浏览器,输入:http:192.168.10.85:18080solradmin注:多核心时为这个地址http:192.168.10.85:18080solr,首页会列出多核的链接,点击进入),就可以访问solr服务了2)如果出现如下图示,表示配置成功。注:观察这个指定的solr主位置,里面存在两个文件夹:conf和data。其中conf里存放了对solr而言最重要的两个配置文件schma.xml和solrconfig.xml。data则用于存放索引文件,schma.xml主要包括typs、filds和其他的一些缺省设置。solrconfig.xml用来配置Solr的一些系统属性,例如与索引和查询处理有关的一些常见的配置选项,以及缓存、扩展等等。2.2中文分词配置2.2.1mmsg4j下面主要说的是怎么在solr中加入中文分词(引入实现mmsg算法的第三方开源项目)。1)下载分词器:http:cod.googl.compmmsg4j2)下载词库:http:cod.googl.compmmsg4jdownloadsdtail?nam=data.zipcan=2q=3)将解压后的mmsg4j1.8.2目录下的mmsg4jall1.8.2.jar拷贝到TomcatHOME\wbapps\solr\WEBINF\lib目录下。4)添加词库:在optsolrtomcatsolr目录下新建dic文件夹,将解压后的sogoudic\data目录下的words.dic拷贝到optsolrtomcatsolrdic目录下。5)更改schma.xml(optsolrtomcatsolrconf)文件,使分词器起到作用。在schma.xml的<typs>、<filds>和部分新增如下配置: <typs><!mmsg4jfildtyps><fildTypnam=txtComplxclass=solr.TxtFildpositionIncrmntGap=100><analyzr><toknizrclass=com.chnlb.mmsg4j.solr.MMSgToknizrFactorymod=complxdicPath=optsolrtomcatsolrdic><filtrclass=solr.LowrCasFiltrFactory><analyzr><fildTyp><fildTypnam=txtMaxWordclass=solr.TxtFildpositionIncrmntGap=100><analyzr><toknizrclass=com.chnlb.mmsg4j.solr.MMSgToknizrFactorymod=maxworddicPath=optsolrtomcatsolrdic><filtrclass=solr.LowrCasFiltrFactory><analyzr><fildTyp><fildTypnam=txtSimplclass=solr.TxtFildpositionIncrmntGap=100><analyzr><toknizrclass=com.chnlb.mmsg4j.solr.MMSgToknizrFactorymod=simpldicPath=optsolrtomcatsolrdic><filtrclass=solr.LowrCasFiltrFactory><analyzr><fildTyp><typs>注:dicPath=optsolrtomcatsolrdic是你的词库路径。 <filds><fildnam=simpltyp=txtSimplindxd=trustord=trumultiValud=tru><fildnam=complxtyp=txtComplxindxd=trustord=trumultiValud=tru><fildnam=txttyp=txtMaxWordindxd=trustord=trumultiValud=tru><filds> <copyFildsourc=simpldst=txt><copyFildsourc=complxdst=txt>重启你的tomcat。访问:http:192.168.10.85:18080solradminanalysis.jsp可以看mmsg4j的分词效果。在Fild的下拉菜单选择nam,然后在应用输入complx。分词的结果,如下图:好了,可以运行起来了,那就添加个文档试下,在解压后的apachsolr1.4.0\xampl\xampldocs目录下创建mmsg4jsolrdmodoc.xml文档,内容如下: <add><doc><fildnam=id>1<fild><fildnam=txt>昨日,记者从解放军总参谋部相关部门获悉,截至3月28日,解放军和武警部队累计出动7.2万人次官兵支援地方抗旱救灾。组织民兵预备役人员20.2万人次支援地方抗旱救灾。<fild><doc><doc><fildnam=id>2<fild><fildnam=txt>下半年房价调整就是挤水分房价不到去年水平。<fild><doc><doc><fildnam=id>3<fild><fildnam=txt>solr是基于LucnJaa搜索库的企业级全文搜索引擎,目前是apach的一个项目。<fild><doc><doc><fildnam=id>4<fild><fildnam=txt>中国人民银行是中华人民共和国的中央银行。<fild><doc><add>然后在cmd下运行post.jar,如下: ·F:\lucn\solr\apachsolr1.4.0\xampl\xampldocs>jaaDurl=http:localhost:8089solrupdatDcommit=ysjarpost.jarmmsg4jsolrdmodoc.xml注意:mmsg4jsolrdmodoc.xml要是UTF8格式,不然提交后会乱码。还有在查询中文时需要把tomcat设置成URIEncoding=UTF8;查看是否有数据,访问:http:localhost:8089solradmin在QuryString:中输入“中国”,显示如下图所示:到这里,分词成功。至于schma.xml中的配置属性会在下一章中进行详细的介绍。[Solr分词顺序]Solr建立索引和对关键词进行查询都得对字串进行分词,在向索引库中添加全文检索类型的索引的时候,Solr会首先用空格进行分词,然后把分词结果依次使用指定的过滤器进行过滤,最后剩下的结果才会加入到索引库中以备查询。分词的顺序如下:索引1:空格whitspacTokniz2:过滤词(停用词,如:on、of、a、an等)StopFiltr3:拆字WordDlimitrFiltr4:小写过滤LowrCasFiltr5:英文相近词EnglishPortrFiltr6:去除重复词RmoDuplicatsToknFiltr查询1:查询相近词2:过滤词3:拆字4:小写过滤5:英文相近词6:去除重复词以上是针对英文,中文的除了空格,其他都类似。注:·mmsg4j:complx1200kbs左右,simpl1900kbs左右·mmsg4j:自带sogou词库,支持名为wordsxxx.dic如:datawordsmy.dic),utf8文本格式的用户自定义词库,一行一词。不支持自动检测。Dmmsg.dic.pathMMsg4jHandlr(1.8以后支持):添加MMsg4jHandlr类,可以在solr中用url的方式来控制加载检测词库。参数:·dicPath是指定词库的目录,特性与MMSgToknizrFactory中的dicPath一样相对目录是,是相对solr.hom)。·chck是指是否检测词库,其值是tru或on。·rload是否尝试加载词库,其值是tru或on。此值为tru,会忽视chck参数。solrconfig.xml:<rqusthandlrnam=mmsg4jclass=com.chnlb.mmsg4j.solr.MMsg4jHandlr><lstnam=dfaults><strnam=dicPath>dic<str><lst><rqusthandlr>此功能可以让外置程序做相关的控制,如:尝试加载词库,然后外置程序决定是否重做索引。2.2.2paoding对全文检索而言,中文分词非常的重要,这里采用了qiqi庖丁分词。集成非常的容易,我下载的是2.0.4alpha2版本,其中它支持最多切分和按最大切分。创建自己的一个中文ToknizrFactory继承自solr的BasToknizrFactory。CratdbyIntlliJIDEA.Usr:ronghaoDat:2007113Tim:14:40:59中文切词对庖丁切词的封装publicclassChinsToknizrFactoryxtndsBasToknizrFactory{最多切分默认模式publicstaticfinalStringMOSTWORDSMODE=mostwords;按最大切分publicstaticfinalStringMAXWORDLENGTHMODE=maxwordlngth;priatStringmod=null;publicoidstMod(Stringmod){if(mod==null||MOSTWORDSMODE.qualsIgnorCas(mod)||dfault.qualsIgnorCas(mod)){this.mod=MOSTWORDSMODE;}lsif(MAXWORDLENGTHMODE.qualsIgnorCas(mod)){this.mod=MAXWORDLENGTHMODE;}ls{thrownwIllgalArgumntExcption(不合法的分析器Mod参数设置:+mod);}}@Orridpublicoidinit(Map<String,String>args){supr.init(args);stMod(args.gt(mod));}publicToknStramcrat(Radrinput){rturnnwPaodingToknizr(input,PaodingMakr.mak(),cratToknCollctor());}priatToknCollctorcratToknCollctor(){if(MOSTWORDSMODE.quals(mod))rturnnwMostWordsToknCollctor();if(MAXWORDLENGTHMODE.quals(mod))rturnnwMaxWordLngthToknCollctor();thrownwError(nrhappnd);}}在schma.xml的字段txt配置里加入该分词器。<fildtypnam=txtclass=solr.TxtFildpositionIncrmntGap=100><analyzrtyp=indx><toknizrclass=com.ronghao.fulltxtsarch.analyzr.ChinsToknizrFactorymod=mostwords><filtrclass=solr.StopFiltrFactoryignorCas=truwords=stopwords.txt><filtrclass=solr.WordDlimitrFiltrFactorygnratWordParts=1gnratNumbrParts=1catnatWords=1catnatNumbrs=1catnatAll=0><filtrclass=solr.LowrCasFiltrFactory><filtrclass=solr.RmoDuplicatsToknFiltrFactory><analyzr><analyzrtyp=qury><toknizrclass=com.ronghao.fulltxtsarch.analyzr.ChinsToknizrFactorymod=mostwords><filtrclass=solr.SynonymFiltrFactorysynonyms=synonyms.txtignorCas=truxpand=tru><filtrclass=solr.StopFiltrFactoryignorCas=truwords=stopwords.txt><filtrclass=solr.WordDlimitrFiltrFactorygnratWordParts=1gnratNumbrParts=1catnatWords=0catnatNumbrs=0catnatAll=0><filtrclass=solr.LowrCasFiltrFactory><filtrclass=solr.RmoDuplicatsToknFiltrFactory><analyzr><fildtyp><typs>完成后重启tomcat,即可在http:localhost:8080s
本文档为【22_开源企业搜索引擎Solr的应用教程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_751522
暂无简介~
格式:doc
大小:647KB
软件:Word
页数:0
分类:互联网
上传时间:2016-12-24
浏览量:10