solr技术方案_第1页
solr技术方案_第2页
solr技术方案_第3页
solr技术方案_第4页
solr技术方案_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一 用户需求以前的互动平台只能对固定表的固定字段做like这样的数据库层面的索引,性能低下,用户体验很差,很难满足业务提出的简化搜索的需求。需求原型:业界通用的做全站搜索的基本上两种:1 选择googleAPI,百度API做。同第三方搜索引擎绑定太死,无法满足后期业务扩展需要,而且全站的SEO做的也不是很好,对于动态的很多ajax请求需要做快照,所以暂时不采用。2 选择现有成熟的框架。这里我们选择使用solr。Solr是一个基于Lucene的Java搜索引擎服务器。Solr 提供了层面搜索、命中醒目显示并且支持多种输出格式(包括 XML/XSLT 和 JSON 格式)。它易于安装和配置,而且附

2、带了一个基于 HTTP 的管理界面。Solr已经在众多大型的网站中使用,较为成熟和稳定。Solr 包装并扩展了 Lucene,所以Solr的基本上沿用了Lucene的相关术语。更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。通过对Solr 进行适当的配置,某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此外,很多 Lucene 工具(如Nutch、 Luke)也可以使用Solr 创建的索引。这里我们主要需要以下几种功能:1 可用性及成熟性。2 中文分词。3 词库与同义词的管理(比如我们使用最高的:股票代码)。4 高亮显示。5

3、 方便的导入数据。6 Facet的轻松配置7 扩展性。二 Solr的体系结构体系结构Solr体系,功能模块介绍及配置。以上是solr的架构图。具体应用时需要理解一下模块的作用及配置。RequestHandler:接受请求,分发请求。另外也包含导入数据,如importhandler。UpdateHandlers 处理索引请求。Search Components:作为handlder的成员变量。处理请求。Facet:分类搜索Tika:apache下处理文件的一个项目。Filter,spelling : 处理字符串Http query/update Database/html importhandl

4、er 默认基本可以满足要求。如果不够则扩展相应的handler和component。丰富的客户端Ruby/php/java/json/javascript使用solrj分词的解决办法系统提供了很多种分词方案。 StopAnalyzer,StandardAnalyzer,WhitespaceAnalyzer只是实现了数字、单词、E-mail地址、IP地址以及中文字符的分析处理,但是对于中文的分析并不好。对于中文分词有几种解决方案。 Paoding: 100万汉字/s() Imdict: 26万汉字/s () Ik: 160万汉字/s () Mmseg4j:simple 1900kb/s

5、 准确率98%()注:官方提供测试环境各不相同。这里我们选择准确率最高的Mmseg4j。而且配置起来也十分简单。我们只是需要在schema中配置以下fieldType即可。<fieldType name="textComplex" class="solr.TextField" positionIncrementGap="100"><analyzer type=”index”> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFact

6、ory" mode="complex" dicPath="./dic" /> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> </analyzer> <analyzer type=”query”> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFac

7、tory" mode="complex" dicPath="./dic" /> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" /> <filter class="solr.StopFilterFactory" ignoreCase="true" words

8、="stopwords.txt" /> </analyzer></fieldType>三 搭建方法及配置安装1. 去apache网站2. 新建目录 /usr/local/solr 3.4.5. 新建目录 /usr/local/solr/solr_home 作为solr 实例的跟目录6. 将solr解压目录中的 contrib,dist,example/solr/* 复制到 solr_home7. 在solr_home下新建lib目录,mkdir lib8. 从dist/program/smsehome-solr/lib/拷贝除了solr-dat

9、aimporthandler-mongo-1.0.0.jar之外的jar文件,中文分词包和数据库驱动包放到 lib下。目录结构如下:lib mmseg4j-analysis-*.jar mmseg4j-core-*.jar mmseg4j-solr-*.jar mongo-java-driver-*.jar9.10. 在solr_home下新建dic目录,mkdir dic。11. 文件结构如下solr_home bin/ collection1/ contrib/ dic/ dist/ lib/12. 拷贝发布文件data-config.xml ,solrconfig.xml ,schema

10、.xml,到/usr/local/solr/solr_home/collection1/conf/ 目录下。13.db_url=jdbc:mysql:/10:3306/smsehomedb_user=irmuserdb_passwd=irmusermongodb_host=mongodb_port=27017mongodb_database=adminmongodb_username=adminmongod_password=BussINEssHome2013file_path=33:8080/smsehome-web/showPicMon

11、go.do?uploadFileMongoId修改红色部分的配置。以db开头的mysql数据源,以mongodb开头的时候mongodb数据源。单机环境到此就配置好了。打开http:/ip:8080/solr/#/ 可以看到dashboard和collection1表示安装成功。打开http:/ip:8080/solr/browse可以看到索引内容为空。集群安装与配置1下载zookeeper 并解压 zookeeper。新建zoo/data目录,用于存放zookeeper 的数据。进入到目录zookeeper/conf 复制 为zoo.cfg,编辑zoo.cfg:dataDir= /zoo/d

12、ataclientPort=2181server.1=:2888:3888server.2=:2888:3888server.3=:2888:3888dataDir设置zookeeper数据存放目录绝对路径clientPort设置Zookeeper链接端口server.i设置集群中服务器 的IP及端口号,i代表第几个服务器,与之对应的,需要在zoo/data中新建myid文件,文件内容为对应的i。集群安装:分别在上安装,/zoo/data/myid文件内容分别为配置中对应的1,2,3。2 启动zookeeper. 启动zookeeper。zkServer.sh start。按照上面server

13、 的顺序启动。Server.1,server.2,server.3。3 配置tomcat。将上面配置好的tomcat复制3份,把相应的solr.xml文件指定到工程目录。4 配置其中一台为JAVA_OPTS=”-Dbootstrap_confdir=/solr_home/collection1/conf -Dcollection.configName=clusterconf -DzkHost=:2181,:2181,:2181 -DnumShards=2” 参数:-Dbootstrap_confdir为solr的配置文件目录-DzkHost为zookeeper服务器列表,逗号隔开-DnumSh

14、ards为分片个数在其他机器分别在,,上配置/tomcat/bin/catalina.sh(.bat windows):JAVA_OPTS=”-DzkHost=:2181,:2181,:2181”此处仅配置-DzkHost即可,所有solr配置均从zookeeper中获取。solr_home/solr.xml中的hostPort="8080" 改为tomcat的启动端口6 启动tomcat启动顺序:首先启动指定了bootstrap_confdir的tomcat,然后启动其他solr的tomcat。四 互动应用

15、(POC)应用方案设计互动社区化应用架构图需要索引的表互动问题、回复、评论相关表:TB_IRCS_QUESTION等活动信息表:TB_IRCS_ACTIVITY等主题表:TB_IRCS_SUBJECT等注册用户表TB_IRCS_INVESTOR等话题表:TB_IRCS_TOPIC等视频表TB_IRCS_VIDEO等高管表TB_IRCS_COMP_LINKMAN,TB_IRCS_INVESTOR等。Facet 具体整理一个索引字段对应关系表.xls搜索引擎配置全局配置Solrconfig配置1 配置系统和自己实现的dataimporthandler的jar包路径<lib dir="

16、;./dist/" regex="solr-dataimporthandler-mongo-d.*.jar" />2 solr索引的路径<dataDir>$solr.data.dir:</dataDir>3 solr的查询接口 <requestHandler name="/query" class="solr.SearchHandler">其中要配置facet信息,高亮信息和字段的权重信息。4 solr的更新接口 <requestHandler name="/upda

17、te" class="solr.UpdateRequestHandler">使用默认字段即可。5 使用数据库导入索引的配置其中配置需要索引的数据库的信息、表名以及索引的字段。Scheme配置主要分为一下几块:Fields、types和copyField 的定义Types定义:name:标识字段。在fields中要引用到。class和其他属性决定了这个fieldType的实际行为。(class以solr开始的,都是在org.appache.solr.analysis包下)其中我们需要配置中文分词上面是基于Mmseg4j的标准配置。我们需要维护词库"d

18、icPath=dicSpelling.txt,同义词库:synonyms.txt、停词库stopwords.txt.Fields配置所有的facet都要在schema中定义一种类型。在配置文件中配置。例如:将相应表的字段都配置到schema中。其中有四个参数:Name:要索引的字段名Type:solr定义的类型。通常我们会加分词插件的类型。就是上面types里配置的字段。indexed:是否被用来建立索引(关系到搜索和排序)stored:是否储存compressed:false,是否使用gzip压缩(只有TextField和StrField可以压缩)mutiValued:是否包含多个值omit

19、Norms:是否忽略掉Norm,可以节省内存空间,只有全文本field和need an index-time boost的field需要norm。(具体没看懂,注释里有矛盾)termVectors:false,当设置true,会存储 term vector。当使用MoreLikeThis,用来作为相似词的field应该存储起来。termPositions:存储 term vector中的地址信息,会消耗存储开销。termOffsets:存储 term vector 的偏移量,会消耗存储开销。default:如果没有属性需要修改,就可以用这个标识下。copyField的配置例如: <copyField source="subtitle" dest="text"/&

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论