关于solr的安装和配置不详述,网上都有。重点说下中文分词。
初学者可直接使用solr自带的中文分词器,smartcn. 下面讲配置方法。我的版本是solr4.10.4
- 拷贝$SOLR_HOME/contrib/analysis-extras/lucene-libs/lucene-analyzers-smartcn-4.10.4.jar 到$SOLR_HOME/example/solr-webapp/webapp/WEB-INF/lib. 如果这里拷贝路径发生错误,启动的时候会提示你类似下面的错误;
error loading Smart SmartChineseSentenceTokenizerFactory...
- 接下来配置$SOLR_HOME/example/solr/collection1/conf/schema.xml文件,主要添加两处地方;
<fieldType name="text_smart" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="org.apache.lucene.analysis.cn.smart.SmartChineseSentenceTokenizerFactory"/>
<filter class="org.apache.lucene.analysis.cn.smart.SmartChineseWordTokenFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.apache.lucene.analysis.cn.smart.SmartChineseSentenceTokenizerFactory"/>
<filter class="org.apache.lucene.analysis.cn.smart.SmartChineseWordTokenFilterFactory"/>
</analyzer>
</fieldType>
这个是配置分词器
<field name="text" type="text_smart" indexed="true" stored="true" multiValued="true"/>
这里是配置field name. 注意,一定要搞清楚什么是field name. 当启动solr的时候,选中controller会有analysis选项。
这里红色标记的就是field name. 所以,你可以随意标记你的field name. 如果你标记为text,或者和其他field name同名. 请注释掉其他同名的filed name设置。我就是开始设置了一个其他名字的filed name。然后用的时候没选择这个filed name。导致我一直以为没有设置成功。还以为是下面这个warning的问题,一直改配置。
org.apache.solr.core.SolrResourceLoader; Solr loaded a deprecated plugin/analysis class [org.apache.lucene.analysis.cn.smart.SmartChineseSentenceTokenizerFactory]. Please consult documentation how to replace it accordingly.