1、Solr安装部署平台搭建SOLR安装部署平台搭建一、 SOLR部署运行环境:运行容器:Tomcat6Solr版本:apache-solr-1.4.0分词器:mmseg4j-1.6.2词库:sogou-dic准备工作:下载tomcat 6:http:/tomcat.apache.org/download-60.cgi下载solr:详情请见:http:/wiki.apache.org/solr/Solr1.4下载分词器:下载sougou词库:开始配置:1、安装tomcat2、将下载的solr包下面的dist文件夹中的apache-solr-1.4.0.war 拷贝到 tomcat的webapps
2、并且改名为 solr.war 一般情况下会自动生成相应的文件夹。3、新建一个 solr-tomcat文件夹,我是把这个文件夹建立在C盘根目录,你可以采用同样方式,也可以不这样,放哪由你决定。 建立好该文件夹以后,在把它下面在建立一个solr文件夹,把下载的solr包里面的examplesolr文件夹下面的所有文件放入到 solr里面。4、最后一步 配置 solr.home,可以有三种方式。1)基于当前路径的方式 这种情况需要在c:solr-tomcat目录下去启动tomcat,Solr查找./solr,因此在启动时候需要切换到c:solr- tomcat 2)基于环境变量 windows在环境
3、变量中建立solr.home,值为c:solr-tomcat linux在当前用户的环境变量中(.bash_profile)或在catalina.sh中添加如下环境变量 export JAVA_OPTS=$JAVA_OPTS -Dsolr.solr.home=/opt/solr-tomcat/solr 3)基于JNDI 在tomcat的conf文件夹建立Catalina文件夹,然后在Catalina文件夹中在建立localhost文件夹,在该文件夹下面建立 solr.xml,其中内容:5、打开浏览器 输入:http:/localhost:8080/solr/admin/ (其中的端口根据情况输
4、入 默认是8080) 就可以访问solr服务了6、如果出现如下图示,表示配置成功。二、 SOLR搭建企业搜索平台-中文分词这篇文章,主要说的是 怎么在solr中加入中文分词1、下载分词器:2、将解压后的mmseg4j-1.8.2目录下的mmseg4j-all-1.8.2.jar拷贝到Tomcat _HOMEwebappssolrWEB-INFlib目录下。3、添加词库:在C:solr-tomcatsolr目录下新建dic文件夹,将解压后的sogou-dicdata目录下的 words.dic拷贝到C:solr-tomcatsolrdic目录下。4、更改schema.xml(c:solr-tom
5、catsolrconf)文件,使分词器起到作用。更改内容为: 注:dicPath=C:solr-tomcatsolrdic是你的词库路径,我的是放在了C:solr-tomcatsolrdic目录下。 重启你的tomcat。访问:http:/localhost:8089/solr/admin/analysis.jsp可以看 mmseg4j 的分词效果。在 Field 的下拉菜单选择 name,然后在应用输入 complex。分词的结果,如下图:好了,可以运行起来了,那就添加个文档试下,在 解压后的apache-solr-1.4.0exampleexampledocs目录下创建 mmseg4j-s
6、olr-demo-doc.xml 文档,内容如下: 1 昨日,记者从解放军总参谋部相关部门获悉,截至3月28日,解放军和武警部队累计出动7.2万人次官兵支援地方抗旱救灾。组织民兵预备役人员20.2万人 次支援地方抗旱救灾。 2 下半年房价调整就是挤水分 房价回不到去年水平。 3 solr是基于Lucene Java搜索库的企业级全文搜索引擎,目前是apache的一个项目。 4 中国人民银行是中华人民共和国的中央银行。 然后在 cmd 下运行 post.jar,如下:F:lucenesolrapache-solr-1.4.0exampleexampledocsjava -Durl=http:/l
7、ocalhost:8089/solr/update -Dcommit=yes -jar post.jar mmseg4j-solr-demo-doc.xml查看是否有数据,访问:http:/localhost:8089/solr/admin/ 在Query String: 中输入“中国”,显示如下图所示:到这里,分词成功。至于schema.xml中的配置属性会在下一章中进行详细的介绍。Solr分词顺序Solr建立索引和对关键词进行查询都得对字串进行分词,在向索引库中添加全文检索类型的索引的时候,Solr会首先用空格进行分词,然后把分词结果依次使用指定的过滤器进行过滤,最后剩下的结果才会加入到索
8、引库中以备查询。分词的顺序如下: 索引 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的主目录下面的sc
9、hema.xml,solrConfig.xml。首先:schema.xmlschema.xml,这个相当于数据表配置文件,它定义了加入索引的数据的数据类型的。主要包括types、fields和其他的一些缺省设置。1、首先需要在types结点内定义一个FieldType子结点,包括name,class,positionIncrementGap等等一些参数,name就是这个FieldType的名称,class指向org.apache.solr.analysis包里面对应的class名称,用来定义这个类型的行为。在FieldType定义的时候最重要的就是定义这个类型的数据在建立索引和进行查询的时候要
10、使用的分析器analyzer,包括分词和过滤。例如: !- in this example, we will only use synonyms at query time - 在index的analyzer中使用 solr.WhitespaceTokenizerFactory这个分词包,就是空格分词,然后使用 solr.StopFilterFactory,solr.WordDelimiterFilterFactory,solr.LowerCaseFilterFactory,solr.EnglishPorterFilterFactory,solr.RemoveDuplicatesTokenFi
11、lterFactory 这几个过滤器。在向索引库中添加text类型的索引的时候,Solr会首先用空格进行分词,然后把分词结果依次使用指定的过滤器进行过滤,最后剩下的结果才会加入到索引库中以备查询。Solr的analysis包并没有带支持中文的包,在第二篇文章中详细讲了怎样添加mmseg4j中文分词器,详情请参见2、接下来的工作就是在fields结点内定义具体的字段(类似数据库中的字段),就是filed,filed定义包括name,type(为之前定义过的各种FieldType),indexed(是否被索引),stored(是否被储存),multiValued(是否有多个值)等等。 例: fie
12、ld的定义相当重要,有几个技巧需注意一下,对可能存在多值得字段尽量设置 multiValued属性为true,避免建索引是抛出错误;如果不需要存储相应字段值,尽量将stored属性设为false。 3、建议建立了一个拷贝字段,将所有的全文字段复制到一个字段中,以便进行统一的检索: 并在拷贝字段结点处完成拷贝设置: 注:“拷贝字段”就是查询的时候不用再输入:userName:张三 and userProfile:张三的个人简介。直接可以输入张三就可以将“名字”含“张三”或者“简介”中含“张三”的又或者“名字”和“简介”都含有“张三”的查询出来。他将需要查询的内容放在了一个字段中,并且默认查询该字
13、段设为该字段就行了。4、除此之外,还可以定义动态字段,所谓动态字段就是不用指定具体的名称,只要定义字段名称的规则,例如定义一个 dynamicField,name 为*_i,定义它的type为text,那么在使用这个字段的时候,任何以_i结尾的字段都被认为是符合这个定义的,例 如:name_i,gender_i,school_i等。 schema.xml配置文件大体上就是这样,更多细节请参见solr wiki http:/wiki.apache.org/solr/SchemaXml。 如果有什么问题,请与我联系,我会和你共同探讨。四、 SOLR搭建企业搜索平台-MultiCoreSolr Mu
14、lticore 是 solr 1.3 的新特性。其目的一个solr实例,可以有多个搜索应用。我们知道你既可以把不同类型的数据放到同一index中,也可以使用分开的多indexes。基于这一点,你只需知道如何使用多 indexes(实际上就是运行Solr的多实例)。尽管如此,为每一个类型添加一个完整的Solr实例会显得太臃肿庞大。Solr1.3引入了Solr core的概念,该方案使用一个Solr实例管理多个indexes,这样就有热点core(hot core)的重读(reloading)与交换(swap,通常是读index与写index交换),那么管理一个 core或index也容易些。每个
15、Solr core由它自己的配置文件和索引数据组成。在多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中引入core name的参数名值对,而是用不同的context。这样就可以像在单core中执行你的管理任务,
16、搜索,更新操作。1、找到solr下载包中的example文件夹,在它的下面有个multicore文件夹,将这个文件夹下面的core0、core1和solr.xml拷贝到 c:solr-tomcatsolr下面。注意:有一个 solr.xml(这只是默认文件,当然也可以指定别的文件),如: 这个文件是告诉solr应该加载哪些core,里有 core0、core1。core0(可以类比以前的solr.home)/conf目录下有schema.xml与solrconfig.xml,可以把实际应用的复制过来。2、启动tomcat,访问应用,就可以看到有 Admin core0 和 Admin core
17、1 3、采用上面的默认solr.xml,索引文件将存放在同一个目录下面,在这里将存放在C:solr-tomcatsolrdata,如果你想更改目录,或者两个应用存放在不同的目录,请参见下面的xml。 一些关键的配置值是: 1.Persistent=false指明运行时的任何修改我们不做保存。如拷贝。如果你想保存从启动起的一些改动,那就把 persistent设置为true。如果你的index策略是完成建index到一个纯净的core中然后交换到活动core 那么你绝对应该设为true。 sharedLib=lib指明了所有core的jar文件的lib目录。如果你有一个core有自己需要的jar
18、文件,那么你可以把他们置入到core/lib目录。例如:karaoke core 使用 Solr Cell来索引化富文本内容,因此那些用来解析和抽取富文本的jar文件被放到./examples/cores/karaoke/lib/.为何使用多core ?Solr实例支持多core比启用多index要好(do more)。多core同时解决了在生产环境下的一些关键需求: 1.重建索引 2.测试配置变更 3.合并索引 4.运行时重命名core 为何多core不是默认的?多core是1.3版本中才加的,1.4后更成熟。我们强烈建议你使用多core,既是你现在的solr.xml只配置了一个core,虽然会比单个索引稍复杂,但可以带来管理core上的好处。或许一天单个core可能最终RELOAD and STATUS命令,又或许单个core最终会被
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1