totoleo / ik-analyzer

Automatically exported from code.google.com/p/ik-analyzer
0 stars 0 forks source link

IK2012FF移除org.wltea.analyzer.solr.IKTokenizerFactory灵活性会丧失很多 #90

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
一般大家用ik的方式都是index用 useSmart="false",query用 
useSmart="true"
移除org.wltea.analyzer.solr.IKTokenizerFactory后
使用ff推荐的
<fieldType name="text" class="solr.TextField"> 
      <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> 
</fieldType> 配置就会失去很多灵活性

可以把ff前版本的org.wltea.analyzer.solr.IKTokenizerFactory改成下面这
样
不使用官方取消了BaseTokenizerFactory接口,使用lucene的TokenizerFac
tory 接口

public class IKTokenizerFactory extends TokenizerFactory {

    private boolean useSmart = false;

    @Override
    public void init(Map<String, String> params) {
        super.init(params);
        String useSmartParam = params.get("useSmart");
        this.useSmart = (useSmartParam != null ? Boolean
                .parseBoolean(useSmartParam) : false);
    }

    /*
     * (non-Javadoc)
     * 
     * @see org.apache.solr.analysis.TokenizerFactory#create(java.io.Reader)
     */
    public Tokenizer create(Reader in) {
        return new IKTokenizer(in, this.useSmart);
    }

}

我已经测试过,可以配置和运行成功,不知道这样有何不多��
�lin帮忙看下

Original issue reported on code.google.com by wangwei....@gmail.com on 25 Oct 2012 at 10:31

GoogleCodeExporter commented 9 years ago
IK 2012FF是为了lucene4.0 / solr4.0开发的
1.首先solr4.0中就没有了 BaseTokenizerFactory 
2.新的配置用下面的方式
<fieldType name="text" class="solr.TextField" >
  <analyzer type="index" class="org.wltea.analyzer.lucene.IKAnalyzer" useSmart ="false"/> 
  <analyzer type="query"  class="org.wltea.analyzer.lucene.IKAnalyzer" useSmart ="true"/> 
</fieldType>

Original comment by linliang...@gmail.com on 26 Oct 2012 at 7:50

GoogleCodeExporter commented 9 years ago
lin,你好!
我尝试在 solr4 中使用 IK 2012FF 并且按照最新配置方法 设置 
useSmart 为true或者false 
后进行分词不起作用。都是按照最细粒度切分的,请教什么��
�题

Original comment by anmy...@gmail.com on 2 Nov 2012 at 3:07