Solr技术方案一用户需求以前的互动平台只能对固定表的固定字段做like这样的数据库层面的索引,性能低下,用户体验很差,很难满足业务提出的简化搜索的需求。需求原型:业界通用的做全站搜索的基本上两种:1选择googleAPI,百度API做。同第三方搜索引擎绑定太死,无法满足后期业务扩展需要,而且全站的SEO做的也不是很好,对于动态的很多ajax请求需要做快照,所以暂时不采用。2选择现有成熟的框架。这里我们选择使用solr。Solr是一个基于Lucene的Java搜索引擎服务器。Solr提供了层面搜索、命中醒目显示并且支持多种输出格式(包括XML/XSLT和JSON格式)。它易于安装和配置,而且附带了一个基于HTTP的管理界面。Solr已经在众多大型的网站中使用,较为成熟和稳定。Solr包装并扩展了Lucene,所以Solr的基本上沿用了Lucene的相关术语。更重要的是,Solr创建的索引与Lucene搜索引擎库完全兼容。通过对Solr进行适当的配置,某些情况下可能需要进行编码,Solr可以阅读和使用构建到其他Lucene应用程序中的索引。此外,很多Lucene工具(如Nutch、Luke)也可以使用Solr创建的索引。这里我们主要需要以下几种功能:1可用性及成熟性。2中文分词。3词库与同义词的管理(比如我们使用最高的:股票代码)。4高亮显示。5方便的导入数据。6Facet的轻松配置7扩展性。二Solr的体系结构体系结构Solr体系,功能模块介绍及配置。以上是solr的架构图。具体应用时需要理解一下模块的作用及配置。RequestHandler:接受请求,分发请求。另外也包含导入数据,如importhandler。UpdateHandlers–处理索引请求。SearchComponents:作为handlder的成员变量。处理请求。Facet:分类搜索Tika:apache下处理文件的一个项目。Filter,spelling:处理字符串Httpquery/updateDatabase/htmlimporthandler默认基本可以满足要求。如果不够则扩展相应的handler和component。丰富的客户端Ruby/php/java/json/javascript使用solrj以上的配置在solrconfig.xml,schema.xml中配置分词的解决办法系统提供了很多种分词方案。StopAnalyzer,StandardAnalyzer,WhitespaceAnalyzer只是实现了数字、单词、E-mail地址、IP地址以及中文字符的分析处理,但是对于中文的分析并不好。对于中文分词有几种解决方案。Paoding:100万汉字/s()Imdict:26万汉字/s()Ik:160万汉字/s()Mmseg4j:simple1900kb/s准确率98%()注:官方提供测试环境各不相同。这里我们选择准确率最高的Mmseg4j。而且配置起来也十分简单。我们只是需要在schema中配置以下fieldType即可。fieldTypename=textComplexclass=solr.TextFieldpositionIncrementGap=100analyzertype=”index”tokenizerclass=com.chenlb.mmseg4j.solr.MMSegTokenizerFactorymode=complexdicPath=../dic/filterclass=solr.StopFilterFactoryignoreCase=truewords=stopwords.txt//analyzeranalyzertype=”query”tokenizerclass=com.chenlb.mmseg4j.solr.MMSegTokenizerFactorymode=complexdicPath=../dic/filterclass=solr.SynonymFilterFactorysynonyms=synonyms.txtignoreCase=trueexpand=true/filterclass=solr.StopFilterFactoryignoreCase=truewords=stopwords.txt//analyzer/fieldType三搭建方法及配置安装solr版本:V4.31.去apache网站下载Solr4.32.新建目录/usr/local/solr3.将solr-4.3.0/dist/solr-4.3.0.war复制到/usr/local/solr下,重命名为solr.war4.将solr-4.3.0/example/lib/ext下的包复制到Tomcat/lib目录下5.新建目录/usr/local/solr/solr_home作为solr实例的跟目录6.将solr解压目录中的contrib,dist,example/solr/*复制到solr_home7.在solr_home下新建lib目录,mkdirlib8.从dist/program/smsehome-solr/lib/拷贝除了solr-dataimporthandler-mongo-1.0.0.jar之外的jar文件,中文分词包和数据库驱动包放到lib下。目录结构如下:└─libmmseg4j-analysis-*.jarmmseg4j-core-*.jarmmseg4j-solr-*.jarmongo-java-driver-*.jarmysql-connector-java-*-bin.jar9.将smsehome-solr/lib/solr-dataimporthandler-mongo-1.0.0.jar导入到disc目录下10.在solr_home下新建dic目录,mkdirdic。11.文件结构如下└─solr_homebin/collection1/contrib/dic/dist/lib/README.txtsolr.xmlZoo.cfg12.拷贝发布文件data-config.xml,solrconfig.xml,schema.xml,solrcore.properties到/usr/local/solr/solr_home/collection1/conf/目录下。13.修改solrcore.propertiesdb_driver=com.mysql.jdbc.Driverdb_url=jdbc:mysql://172.26.1.110:3306/smsehomedb_user=irmuserdb_passwd=irmusermongodb_host=172.26.1.110mongodb_port=27017mongodb_database=adminmongodb_username=adminmongod_password=BussINEssHome2013file_path=修改红色部分的配置。以db开头的mysql数据源,以mongodb开头的时候mongodb数据源。单机环境到此就配置好了。打开可以看到dashboard和collection1表示安装成功。打开可以看到索引内容为空。集群安装与配置1下载zookeeper并解压zookeeper。新建zoo/data目录,用于存放zookeeper的数据。进入到目录zookeeper/conf复制zoo_sample.cfg为zoo.cfg,编辑zoo.cfg:dataDir=/zoo/dataclientPort=2181server.1=192.168.1.11:2888:3888server.2=192.168.1.12:2888:3888server.3=192.168.1.13:2888:3888dataDir设置zookeeper数据存放目录绝对路径clientPort设置Zookeeper链接端口server.i设置集群中服务器的IP及端口号,i代表第几个服务器,与之对应的,需要在zoo/data中新建myid文件,文件内容为对应的i。集群安装:分别在192.168.1.11,192.168.1.12,192.168.1.13上安装,/zoo/data/myid文件内容分别为配置中对应的1,2,3。2启动zookeeper.启动zookeeper。zkServer.shstart。按照上面server的顺序启动。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=192.168.1.11:2181,192.168.1.12:2181,192.168.1.13:2181-DnumShards=2”参数:-Dbootstrap_confdir为solr的配置文件目录-Dcollection.configName为solrCloud配置显示名-DzkHost为zookeeper服务器列表,逗号隔开-DnumShards为分片个数在其他机器分别在192.168.1.2,192.168.1.3,192.168.1.4上配置/tomcat/bin/catalina.sh(.batwindows):JAVA_OPTS=”-DzkHost=192.168.1.11:2181,192.168.1.12:2181,192.168.1.13:2181”此处仅配置-DzkHost即可,所有solr配置均从zookeeper中获取。5修改solr.xmlsolr_home/solr.xml中的hostPort=8080改为tomcat的启动端口6启动tomcat启动顺序:首先启动指定了bootstrap_confdir的tomcat,然后启动其他solr的tomcat。四互动应用(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包路径libdir=../dist/regex=solr-dataimporthandler-mongo-\d.*\.jar/2solr索引的路径dataDir${solr.data.dir:}/dataDir3solr的查询接口requestHandlername=/queryclass=solr.