Solr总结性的说,这是一个对lucene进行完全封装(从前台到后台)的项目,项目中如果需要使用搜索功能,经过配置之后项目就可以直接通过solr提供的搜索api进行搜索功能的应用,而无需开发人员再针对数据进行索引、分词的处理。
下载Solr并解压:
创建SolrHome:
E盘下创建SolrHome目录,将solr解压后目录example
中的multicore拷贝到
SolrHome目录,将dist下的
solr-4.6.0.war拷贝到
SolrHome目录。
配置SolrHome的信息:
在Tomcat的目录conf\Catalina\localhost(如果不存在,请先运行一下tomcat就会自动生成)下,创建solr.xml信息如下:
<? xml version = "1.0" encoding = "UTF-8" ?><Context docBase = "E:/SolrHome/solr.war" debug = "0" crossContext = "true" ><Environment name = "solr/home" type = "java.lang.String" value = "E:/SolrHome/multicore" override = "true" /></Context>
配置solr运行支持包:
将solr解压后目录solr-4.6.0\dist\solrj-lib中的相关文件,拷贝之tomcat的lib目录。
jcl-over-slf4j-1.6.6.jar
jul-to-slf4j-1.6.6.jar
log4j-1.2.16.jar
slf4j-api-1.6.6.jar
slf4j-log4j12-1.6.6.jar
启动tomcat,访问
http://localhost:8080/solr,就可进入solr的相关配置及运行信息界面。
配置Solr的中文分词技术:
solr的默认分词是按照英语进行分词,即按照空格进行分词,该分词算法不适用与中文,会导致大量的冗余索引。
solr的第三方中文分词
paoding :Lucene中文分词“庖丁解牛” Paoding Analysis
imdict :imdict智能词典所采用的智能中文分词程序
mmseg4j : 用 Chih-Hao Tsai 的 MMSeg 算法 实现的中文分词器
iIKAnalyzer :采用了特有的“正向迭代最细粒度切分算法“,多子处理器分析模式lucene-analyzers-smartcn :Solr官方提供的中文分词,有点与新版本同步发行,缺点相对中文化略差
将solr解压后目录solr-4.6.0\contrib\analysis-extras\lucene-libs中的lucene-analyzers-smartcn-4.6.0.jar文件,拷贝之tomcat的项目运行webapps\solr\WEB-INF\lib目录。
配置Solr的注册分词器:
进入
<Environment name="solr/home" type="java.lang.String" value="E:/SolrHome/multicore" override="true" />
目录中,将conf/
schema.xml中:
Types标签中加入以下:
<fieldType name = "text_smart" class = "solr.TextField" positionIncrementGap = "100" ><analyzer type = "index" ><!-- 此处需要配置主要的分词类 --><tokenizer class = "solr.SmartChineseSentenceTokenizerFactory" /><!--<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /><filter class="solr.LowerCaseFilterFactory"/>--><!-- in this example, we will only use synonyms at query time<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>--><filter class = "solr.SmartChineseWordTokenFilterFactory" /></analyzer><analyzer type = "query" ><!-- 此处配置同上 --><tokenizer class = "solr.SmartChineseSentenceTokenizerFactory" /><!--<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /><filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/><filter class="solr.LowerCaseFilterFactory"/>--><filter class = "solr.SmartChineseWordTokenFilterFactory" /></analyzer></fieldType>
<fields>标签下加入以下:
<field name="sma" type="text_smart" indexed="true" stored="true" multiValued="true"/>
修改默认分词器:
<defaultSearchField>sma</defaultSearchField>
验证中文分词效果:
访问:localhost:8080/solr
选择菜单:Core Admin-->Core Selector-->Core0-->Analysis
Field Value (Index)中输入对应中文,然后进行分词解析