茅屋为秋风 发表于 2016-12-16 11:18:03

Solr 4.10.2整合IKAnalyzer 2012FF_hf1 智能分析与细粒度分析配置useSmart

1.solr分词的主要配置文件之一: schema.xml,添加IKAnalyzer 2012FF_hf1分词配置方式一如下:
<fieldType name="text_cn" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer" />
</fieldType>
2.将IKAnalyzer2012FF_u1.jar放到%SOLR_HOME%/example/solr-webapp/webapp/WEB-INF/lib下。
3.cd %SOLR_HOME%/example/执行:
java -jar start.jar
4.访问:http://localhost:8983/solr
选择coreName:collection1 -->Analysis,Analyse Fieldname / FieldType:这里选择我们定义的text_cn,接着执行中文分词测试:

5.由分词结果可知,IKAnalyzer的默认分词模式为细粒度分词,但有的时候我们想要却是智能分词。此版本去除了之前提供的IKTokenizerFactory,故此重新实现,让其支持智能分词。
实现代码如下:
package org.wltea.analyzer.lucene;
import java.io.Reader;
import java.util.Map;
import org.apache.lucene.analysis.Tokenizer;
import org.apache.lucene.analysis.util.TokenizerFactory;
import org.apache.lucene.util.AttributeFactory;
public class IKTokenizerFactory extends TokenizerFactory{
private final boolean useSmart;
public IKTokenizerFactory(Map<String, String> args) {
super(args);
this.useSmart = getBoolean(args, "useSmart", false);
}
@Override
public Tokenizer create(AttributeFactory factory, Reader in) {
return new IKTokenizer(in,this.useSmart);
}
}
6.将此类打包到IKAnalyzer2012FF_u1.jar中,接下来修改schema.xml,添加第二种IKAnalyzer 2012FF_hf1分词配置方式,使其支持智能分词(useSmart用来制定是否使用智能分词):
<fieldType name="text_cn" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
7.重新启动solr,进行分词测试:

可以看到index采用的为默认的细粒度分词,query采用的为智能分词.
到此,简单的solr中文分词server搭建完毕,接下来准备使用spring-data-solr构建搜索,索引创建,更新,高亮等后续操作,且听下回忽悠。。。。
页: [1]
查看完整版本: Solr 4.10.2整合IKAnalyzer 2012FF_hf1 智能分析与细粒度分析配置useSmart