solr技术方案.docx

上传人:b****5 文档编号:6103635 上传时间:2023-01-03 格式:DOCX 页数:12 大小:621.42KB
下载 相关 举报
solr技术方案.docx_第1页
第1页 / 共12页
solr技术方案.docx_第2页
第2页 / 共12页
solr技术方案.docx_第3页
第3页 / 共12页
solr技术方案.docx_第4页
第4页 / 共12页
solr技术方案.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

solr技术方案.docx

《solr技术方案.docx》由会员分享,可在线阅读,更多相关《solr技术方案.docx(12页珍藏版)》请在冰豆网上搜索。

solr技术方案.docx

solr技术方案

Solr技术方案

一用户需求

以前的互动平台只能对固定表的固定字段做like这样的数据库层面的索引,性能低下,用户体验很差,很难满足业务提出的简化搜索的需求。

需求原型:

业界通用的做全站搜索的基本上两种:

1选择googleAPI,XXAPI做。

同第三方搜索引擎绑定太死,无法满足后期业务扩展需要,而且全站的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(zer/)

☉Ik:

160万汉字/s()

☉Mmseg4j:

simple1900kb/s准确率98%()

注:

官方提供测试环境各不相同。

这里我们选择准确率最高的Mmseg4j。

而且配置起来也十分简单。

我们只是需要在schema中配置以下fieldType即可。

三搭建方法及配置

安装

solr版本:

V4.3

1.去apache网站下载Solr4.3

2.新建目录/usr/local/solr

3.将solr-4.3.0/dist/solr-4.3.0.war复制到/usr/local/solr下,重命名为solr.war

4.将solr-4.3.0/example/lib/ext下的包复制到Tomcat/lib目录下

5.新建目录/usr/local/solr/solr_home作为solr实例的跟目录

6.将solr解压目录中的contrib,dist,example/solr/*复制到solr_home

7.在solr_home下新建lib目录,mkdirlib

8.从dist/program/smsehome-solr/lib/拷贝除了solr-dataimporthandler-mongo-1.0.0.jar之外的jar文件,中文分词包和数据库驱动包放到lib下。

目录结构如下:

└─lib

mmseg4j-analysis-*.jar

mmseg4j-core-*.jar

mmseg4j-solr-*.jar

mongo-java-driver-*.jar

mysql-connector-java-*-bin.jar

9.将smsehome-solr/lib/solr-dataimporthandler-mongo-1.0.0.jar导入到disc目录下

10.在solr_home下新建dic目录,mkdirdic。

11.文件结构如下

└─solr_home

bin/

collection1/

contrib/

dic/

dist/

lib/

README.txt

solr.xml

Zoo.cfg

12.拷贝发布文件data-config.xml,solrconfig.xml,schema.xml,solrcore.properties

到/usr/local/solr/solr_home/collection1/conf/目录下。

13.修改solrcore.properties

db_driver=com.mysql.jdbc.Driver

db_url=jdbc:

mysql:

//172.26.1.110:

3306/smsehome

db_user=irmuser

db_passwd=irmuser

mongodb_host=172.26.1.110

mongodb_port=27017

mongodb_database=admin

mongodb_username=admin

mongod_password=BussINEssHome2013

修改红色部分的配置。

以db开头的mysql数据源,以mongodb开头的时候mongodb数据源。

单机环境到此就配置好了。

打开可以看到dashboard和collection1表示安装成功。

打开可以看到索引内容为空。

集群安装与配置

1下载zookeeper

并解压zookeeper。

新建zoo/data目录,用于存放zookeeper的数据。

进入到目录zookeeper/conf复制zoo_sample.cfg为zoo.cfg,编辑zoo.cfg:

dataDir=/zoo/data

clientPort=2181

server.1=192.168.1.11:

2888:

3888

server.2=192.168.1.12:

2888:

3888

server.3=192.168.1.13:

2888:

3888

dataDir设置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.xml

solr_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包路径

2solr索引的路径

${solr.data.dir:

}

3solr的查询接口

其中要配置facet信息,高亮信息和字段的权重信息。

4solr的更新接口

使用默认字段即可。

5使用数据库导入索引的配置

其中data-config.xml配置需要索引的数据库的信息、表名以及索引的字段。

Scheme配置

主要分为一下几块:

Fields、types和copyField的定义

Types定义:

name:

标识字段。

在fields中要引用到。

class和其他属性决定了这个fieldType的实际行为。

(class以solr开始的,都是在org.appache.solr.analysis包下)

其中我们需要配置中文分词

上面是基于Mmseg4j的标准配置。

我们需要维护词库"dicPath=dic

Spelling.txt,同义词库:

synonyms.txt、停词库stopwords.txt.

Fields配置

所有的facet都要在schema中定义一种类型。

在配置文件中配置。

例如:

将相应表的字段都配置到schema中。

其中有四个参数:

Name:

要索引的字段名

Type:

solr定义的类型。

通常我们会加分词插件的类型。

就是上面types里配置的字段。

indexed:

是否被用来建立索引(关系到搜索和排序)

stored:

是否储存

compressed:

[false],是否使用gzip压缩(只有TextField和StrField可以压缩)

mutiValued:

是否包含多个值

omitNorms:

是否忽略掉Norm,可以节省内存空间,只有全文本field和needanindex-timeboost的field需要norm。

(具体没看懂,注释里有矛盾)

termVectors:

[false],当设置true,会存储termvector。

当使用MoreLikeThis,用来作为相似词的field应该存储起来。

termPositions:

存储termvector中的地址信息,会消耗存储开销。

termOffsets:

存储termvector的偏移量,会消耗存储开销。

default:

如果没有属性需要修改,就可以用这个标识下。

copyField的配置

例如:

将多个field的数据放在一起同时搜索,提供速度将一个field的数据拷贝到另一个,可以用2种不同的方式来建立索引。

精确匹配和模糊匹配。

对于schema的配置情况,可以采用admin界面测试。

Analysis中FieldValue(Index)显示是如何构建索引的。

右侧FieldValue(Query)显示查询是如何分解索引的。

客户端API

索引更新API

--Thedefaulthigh-performanceupdatehandler-->

port/update?

qt

第二种dataimporthandler,参见solr的维护界面。

信息查询API

port/query?

qt=

配置,在solrconfig.xml中配置请求的url。

其中可以配置分词的权重,页面需要的facet信息,高亮的信息。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 营销活动策划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1