SOLR搭建企业搜索平台.docx

上传人:b****7 文档编号:9645711 上传时间:2023-02-05 格式:DOCX 页数:29 大小:104.52KB
下载 相关 举报
SOLR搭建企业搜索平台.docx_第1页
第1页 / 共29页
SOLR搭建企业搜索平台.docx_第2页
第2页 / 共29页
SOLR搭建企业搜索平台.docx_第3页
第3页 / 共29页
SOLR搭建企业搜索平台.docx_第4页
第4页 / 共29页
SOLR搭建企业搜索平台.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

SOLR搭建企业搜索平台.docx

《SOLR搭建企业搜索平台.docx》由会员分享,可在线阅读,更多相关《SOLR搭建企业搜索平台.docx(29页珍藏版)》请在冰豆网上搜索。

SOLR搭建企业搜索平台.docx

SOLR搭建企业搜索平台

SOLR搭建企业搜索平台

一、SOLR搭建企业搜索平台

运行环境:

运行容器:

Tomcat6.0.20

Solr版本:

apache-solr-1.4.0

分词器:

mmseg4j-1.6.2

词库:

sogou-dic

准备工作:

下载tomcat6.0.20:

http:

//tomcat.apache.org/download-60.cgi

下载solr:

详情请见:

http:

//wiki.apache.org/solr/Solr1.4

下载分词器:

下载sougou词库:

开始配置:

1、安装tomcat

2、将下载的solr包下面的dist文件夹中的apache-solr-1.4.0.war拷贝到tomcat的webapps并且改名为solr.war一般情况下会自动生成相应的文件夹。

3、新建一个solr-tomcat文件夹,我是把这个文件夹建立在C盘根目录,你可以采用同样方式,也可以不这样,放哪由你决定。

建立好该文件夹以后,在把它下面在建立一个solr文件夹,把下载的solr包里面的example\solr文件夹下面的所有文件放入到solr里面。

4、最后一步配置solr.home,可以有三种方式。

1)基于当前路径的方式

     这种情况需要在c:

\solr-tomcat\目录下去启动tomcat,Solr查找./solr,因此在启动时候需要切换到c:

\solr-tomcat\

  2)基于环境变量

     windows在环境变量中建立solr.home,值为c:

\solr-tomcat

     linux在当前用户的环境变量中(.bash_profile)或在catalina.sh中添加如下环境变量

exportJAVA_OPTS="$JAVA_OPTS-Dsolr.solr.home=/opt/solr-tomcat/solr"

   3)基于JNDI

      在tomcat的conf文件夹建立Catalina文件夹,然后在Catalina文件夹中在建立localhost文件夹,在该文件夹下面建立solr.xml,其中内容:

/ProgramFiles/ApacheSoftwareFoundation/Tomcat6.0/webapps/solr" debug="0" crossContext="true" >  

        

 

5、打开浏览器输入:

http:

//localhost:

8080/solr/admin/ (其中的端口根据情况输入默认是8080)就可以访问solr服务了

6、如果出现如下图示,表示配置成功。

二、SOLR搭建企业搜索平台--中文分词

这篇文章,主要说的是怎么在solr中加入中文分词

1、下载分词器:

2、将解压后的mmseg4j-1.8.2目录下的mmseg4j-all-1.8.2.jar拷贝到Tomcat_HOME\webapps\solr\WEB-INF\lib目录下。

3、添加词库:

在C:

\solr-tomcat\solr目录下新建dic文件夹,将解压后的sogou-dic\data目录下的words.dic拷贝到C:

\solr-tomcat\solr\dic目录下。

4、更改schema.xml(c:

\solr-tomcat\solr\conf\)文件,使分词器起到作用。

更改内容为:

……

--mmseg4jfieldtypes-->

\solr-tomcat\solr\dic"/>

\solr-tomcat\solr\dic"/>

\solr-tomcat\solr\dic"/>

……

注:

dicPath="C:

\solr-tomcat\solr\dic"是你的词库路径,我的是放在了C:

\solr-tomcat\solr\dic目录下。

……

……

重启你的tomcat。

访问:

http:

//localhost:

8089/solr/admin/analysis.jsp可以看mmseg4j的分词效果。

在Field的下拉菜单选择name,然后在应用输入complex。

分词的结果,如下图:

好了,可以运行起来了,那就添加个文档试下,在解压后的apache-solr-1.4.0\example\exampledocs目录下创建mmseg4j-solr-demo-doc.xml文档,内容如下:

1

昨日,记者从解放军总参谋部相关部门获悉,截至3月28日,解放军和武警部队累计出动7.2万人次官兵支援地方抗旱救灾。

组织民兵预备役人员20.2万人次支援地方抗旱救灾。

2

下半年房价调整就是挤水分房价回不到去年水平。

3

solr是基于LuceneJava搜索库的企业级全文搜索引擎,目前是apache的一个项目。

4

中国人民银行是中华人民共和国的中央银行。

然后在cmd下运行post.jar,如下:

F:

\lucene\solr\apache-solr-1.4.0\example\exampledocs>java-Durl=http:

//localhost:

8089/solr/update-Dcommit=yes-jarpost.jarmmseg4j-solr-demo-doc.xml

查看是否有数据,访问:

http:

//localhost:

8089/solr/admin/在QueryString:

中输入“中国”,显示如下图所示:

到这里,分词成功。

至于schema.xml中的配置属性会在下一章中进行详细的介绍。

 

[Solr分词顺序]

Solr建立索引和对关键词进行查询都得对字串进行分词,在向索引库中添加全文检索类型的索引的时候,Solr会首先用空格进行分词,然后把分词结果依次使用指定的过滤器进行过滤,最后剩下的结果才会加入到索引库中以备查询。

分词的顺序如下:

索引

1:

空格whitespaceTokenize

2:

过滤词(停用词,如:

on、of、a、an等)StopFilter

3:

拆字WordDelimiterFilter

4:

小写过滤LowerCaseFilter

5:

英文相近词EnglishPorterFilter

6:

去除重复词RemoveDuplicatesTokenFilter

查询

1:

查询相近词

2:

过滤词

3:

拆字

4:

小写过滤

5:

英文相近词

6:

去除重复词

以上是针对英文,中文的除了空格,其他都类似。

三、SOLR搭建企业搜索平台—配置文件详解

在solr里面主要的就是solr的主目录下面的schema.xml,solrConfig.xml。

首先:

schema.xml

schema.xml,这个相当于数据表配置文件,它定义了加入索引的数据的数据类型的。

主要包括types、fields和其他的一些缺省设置。

1、首先需要在types结点内定义一个FieldType子结点,包括name,class,positionIncrementGap等等一些参数,name就是这个FieldType的名称,class指向org.apache.solr.analysis包里面对应的class名称,用来定义这个类型的行为。

在FieldType定义的时候最重要的就是定义这个类型的数据在建立索引和进行查询的时候要使用的分析器analyzer,包括分词和过滤。

例如:

--inthisexample,wewillonlyusesynonymsatquerytime

-->

--Caseinsensitivestopwordremoval.

enablePositionIncrements=trueensuresthata'gap'isleftto

allowforaccuratephrasequeries.

-->

ignoreCase="true"

words="stopwords.txt"

enablePositionIncrements="true"

/>

……

在index的analyzer中使用solr.WhitespaceTokenizerFactory这个分词包,就是空格分词,然后使用solr.StopFilterFactory,solr.WordDelimiterFilterFactory,solr.LowerCaseFilterFactory,solr.EnglishPorterFilterFactory,solr.RemoveDuplicatesTokenFilterFactory这几个过滤器。

在向索引库中添加text类型的索引的时候,Solr会首先用空格进行分词,然后把分词结果依次使用指定的过滤器进行过滤,最后剩下的结果才会加入到索引库中以备查询。

Solr的analysis包并没有带支持中文的包,在第二篇文章中详细讲了怎样添加mmseg4j中文分词器,详情请参见

2、接下来的工作就是在fields结点内定义具体的字段(类似数据库中的字段),就是filed,filed定义包括name,type(为之前定义过的各种FieldType),indexed(是否被索引),stored(是否被储存),multiValued(是否有多个值)等等。

例:

field的定义相当重要,有几个技巧需注意一下,对可能存在多值得字段尽量设置multiValued属性为true,避免建索引是抛出错误;如果不需要存储相应字段值,尽量将stored属性设为false。

3、建议建立了一个拷贝字段,将所有的全文字段复制到一个字段中,以便进行统一的检索:

并在拷贝字段结点处完成拷贝设置:

注:

“拷贝字段”就是查询的时候不用再输入:

userName:

张三anduserProfile:

张三的个人简介。

直接可以输入"张三"就可以将“名字”含“张三”或者“简介”中含“张三”的又或者“名字”和“简介”都含有“张三”的查询出来。

他将需要查询的内容放在了一个字段中,并且默认查询该字段设为该字段就行了。

4、除此之外,还可以定义动态字段,所谓动态字段就是不用指定具体的名称,只要定义字段名称的规则,例如定义一个dynamicField,name为*_i,定义它的type为text,那么在使用这个字段的时候,任何以_i结尾的字段都被认为是符合这个定义的,例如:

name_i,gender_i,school_i等。

schema.xml配置文件大体上就是这样,更多细节请参见solrwikihttp:

//wiki.apache.org/solr/SchemaXml。

如果有什么问题,请与我联系,我会和你共同探讨。

四、SOLR搭建企业搜索平台--MultiCore

SolrMulticore是solr1.3的新特性。

其目的一个solr实例,可以有多个搜索应用。

我们知道你既可以把不同类型的数据放到同一index中,也可以使用分开的多indexes。

基于这一点,你只需知道如何使用多indexes(实际上就是运行Solr的多实例)。

尽管如此,为每一个类型添加一个完整的Solr实例会显得太臃肿庞大。

Solr1.3引入了Solrcore的概念,该方案使用一个Solr实例管理多个indexes,这样就有热点core(hotcore)的重读(reloading)与交换(swap,通常是读index与写index交换),那么管理一个core或index也容易些。

每个Solrcore由它自己的配置文件和索引数据组成。

在多core执行搜索和索引几乎和没有使用core一样。

你只是添加core的名字为各自不同的URL。

单core情况下的如下搜索:

http:

//localhost:

8983/solr/select?

q=dave%20matthews

在多core环境下,你可以通过如下方式访问一个名为mbartists的core:

http:

//localhost:

8983/solr/core0/select?

q=dave%20matthews

并非在URL中引入corename的参数名值对,而是用不同的context。

这样就可以像在单core中执行你的管理任务,搜索,更新操作。

1、找到solr下载包中的example文件夹,在它的下面有个multicore文件夹,将这个文件夹下面的core0、core1和solr.xml拷贝到c:

\solr-tomcat\solr下面。

注意:

有一个solr.xml(这只是默认文件,当然也可以指定别的文件),如:

xmlversion="1.0"encoding="UTF-8"?

>

这个文件是告诉solr应该加载哪些core,……里有core0、core1。

core0(可以类比以前的solr.home)/conf目录下有schema.xml与solrconfig.xml,可以把实际应用的复制过来。

2、启动tomcat,访问应用,就可以看到有Admincore0和Admincore1

3、采用上面的默认solr.xml,索引文件将存放在同一个目录下面,在这里将存放在C:

\solr-tomcat\solr\data,如果你想更改目录,或者两个应用存放在不同的目录,请参见下面的xml。

一些关键的配置值是:

1.Persistent="false"指明运行时的任何修改我们不做保存。

如拷贝。

如果你想保存从启动起的一些改动,那就把persistent设置为true。

如果你的index策略是完成建index到一个纯净的core中然后交换到活动core那么你绝对应该设为true。

sharedLib="lib"指明了所有core的jar文件的lib目录。

如果你有一个core有自己需要的jar文件,那么你可以把他们置入到core/lib目录。

例如:

karaokecore使用SolrCell来索引化富文本内容,因此那些用来解析和抽取富文本的jar文件被放到./examples/cores/karaoke/lib/.

为何使用多core?

Solr实例支持多core比启用多index要好(domore)。

多core同时解决了在生产环境下的一些关键需求:

1.重建索引

2.测试配置变更

3.合并索引

4.运行时重命名core

为何多core不是默认的?

多core是1.3版本中才加的,1.4后更成熟。

我们强烈建议你使用多core,既是你现在的solr.xml只配置了一个core,虽然会比单个索引稍复杂,但可以带来管理core上的好处。

或许一天单个core可能最终RELOADandSTATU

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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