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,接着执行中文分词测试:


Solr 4.10.2整合IKAnalyzer 2012FF_hf1 智能分析与细粒度分析配置useSmart_第1张图片

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,进行分词测试:

Solr 4.10.2整合IKAnalyzer 2012FF_hf1 智能分析与细粒度分析配置useSmart_第2张图片

可以看到index采用的为默认的细粒度分词,query采用的为智能分词.
到此,简单的solr中文分词server搭建完毕,接下来准备使用spring-data-solr构建搜索,索引创建,更新,高亮等后续操作,且听下回忽悠。。。。



你可能感兴趣的:(IKAnalyzer)