`
linliangyi2007
  • 浏览: 1003876 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

发布 IK Analyzer 2012 FF 版本

阅读更多
首先感谢大家对IK分词器的关注。

最近一段时间正式公司事务最忙碌的时候,Lucene4.0和Solr4.0发布后,便收到了广大网友的大量邮件要求更新版本,这让我既开心又感到鸭梨大啊~~

花了3天时间,了解了Lucene4.0和solr 4.0与分词相关部分的源码。果然,又是一次不兼容的修订啊~~

时间紧迫的推出了IK Analyzer 2012 FF版本 (你问啥是FF,其实就是For 4.0),在API和功能上保持不变,只是让其支持了Lucene4.0和Solr4.0,让这部分的用户能用起来。

如果你还是Lucene3.2-3.6的用户,那么你只需要下载IK Analyzer 2012 U6版本。因为FF版本的API与3.x是不兼容的。

再次吐槽,坑爹的Lucene!!

GoogleCode下载:
http://code.google.com/p/ik-analyzer/downloads/list

IK 2012分词器介绍,请参看:
http://linliangyi2007.iteye.com/blog/1445658

补充说明一下,Solr4.0的对分词器的用法和3.x不同了,直接配置分词器即可。不用TokenizerFactory了,最新下载包已经更新说明文档






分享到:
评论
49 楼 zqb666kkk 2015-06-24  
是 的 希望楼主 更新 对solr 5.2的支持 不然只能考虑换  中文分词了 ,之前项目就用的ik 已经很熟练了 希望楼主尽快更新!
48 楼 18210607179 2015-06-11  
楼主啊,solr5.2出来啦,IK什么时候出支持5.2的版本呀,着急呀!!!!!!!!!!!!!!!!!!!!
47 楼 飘飘he所似 2014-10-27  
林sir 你好,

非常感谢你的开源项目,非常好,一直在用!!!

近期有一个百思不得其解的问题,想请教一下。

我搜“读者”、“读者证件”都可以,但是搜“读者证”就不行。
我加入“读者证”,通过加载自定义词典、还是手动加入main212.dic,编译源码都不行。
但是我在solr的analysis.jsp分析,却能正确的分词,这个是什么原因?

(修改之后,我都重新建立索引)

配置文件如下:
  
<fieldType name="text_zh" class="solr.TextField">
     <analyzer>       
       <tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" />
   </analyzer>
</fieldTyp>


谢谢!
46 楼 yanghengtao 2014-07-15  
弱弱的请教一下楼主,我发现用ik分词器进行分词时,我搜索单个字母或者数字,搜索不到,这个是不是ik现在版本不支持呀?
45 楼 shliuzw 2014-07-09  
shliuzw 写道
你好,请教个问题,最大词长分词和最细粒度分词,有什么根本形区别?各自有自己的运行场景吗?


在应用中(词库中有熊猫和猫),用户输入“熊猫”,通过lucene分词成all:"熊猫 猫" OR all:"猫",但是这样all中只有熊猫的内容就不能搜索出来,请教这个怎么处理?



具体的业务中存在一些特有的词库,这些扩展的词库,有没有什么自动维护词库的方案?
44 楼 shliuzw 2014-07-09  
你好,请教个问题,最大词长分词和最细粒度分词,有什么根本形区别?各自有自己的运行场景吗?


在应用中(词库中有熊猫和猫),用户输入“熊猫”,通过lucene分词成all:"熊猫 猫" OR all:"猫",但是这样all中只有熊猫的内容就不能搜索出来,请教这个怎么处理?
43 楼 403205592 2014-06-25  
请教个问题Solr4.7版本不支持userSmart配置么,
	 <fieldType name="text_ik" class="solr.TextField">
	      <analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer" userSmart="true"/>
	      <analyzer type="query" isMaxWordLength="true"  class="org.wltea.analyzer.lucene.IKAnalyzer" userSmart="true"/>
	 </fieldType>
我这样配置不起作用哦,怎么解决
42 楼 znfsky 2013-10-18  
loker_025 写道
linliangyi2007 写道
loker_025 写道
博主好!感谢博主无私奉献以及及时更新,我在配置4.0solr的时候出现如下错误。
Caused by: java.lang.RuntimeException: Can't set positionIncrementGap on custom analyzer class org.wltea.analyzer.lucene.IKAnalyzer
	at org.apache.solr.schema.FieldType.setArgs(FieldType.java:159)
	at org.apache.solr.schema.FieldTypePluginLoader.init(FieldTypePluginLoader.java:127)
	at org.apache.solr.schema.FieldTypePluginLoader.init(FieldTypePluginLoader.java:1)
	at org.apache.solr.util.plugin.AbstractPluginLoader.load(AbstractPluginLoader.java:190)
	... 34 more

调查代码发现solr报错的地方
 if (positionInc != null) {
      Analyzer analyzer = getAnalyzer();
      if (analyzer instanceof SolrAnalyzer) {
        ((SolrAnalyzer)analyzer).setPositionIncrementGap(Integer.parseInt(positionInc));
      } else {
        throw new RuntimeException("Can't set positionIncrementGap on custom analyzer " + analyzer.getClass());
      }
      analyzer = getQueryAnalyzer();
      if (analyzer instanceof SolrAnalyzer) {
        ((SolrAnalyzer)analyzer).setPositionIncrementGap(Integer.parseInt(positionInc));
      } else {
        throw new RuntimeException("Can't set positionIncrementGap on custom analyzer " + analyzer.getClass());
      }
      initArgs.remove("positionIncrementGap");
    }

analyzer instanceof SolrAnalyzer,看了下IK的源码,IKAnalyzer是继承lucene的Analyzer而导致报错。是我配置问题吗?还是我版本有问题?
感谢博主!



IKAnalyzer没有继承SolrAnalyzer,就如同StandardAnalyzer一样。你看一下solr4.0中如何配置StandardAnalyzer吧

收到,已经解决了!感谢

请问解决方案是什么呢?如果直接把这个字段去掉的话,那multivalue的字段怎么办呢?positionIncrementGap是必要的属性啊
41 楼 munandong 2013-06-24  
林老师 您好: IK Analyzer 2012 FF 的Dictionary词典管理类,是单子模式 , 如果要产生不同的结果需要如何做。
40 楼 linshouyi 2013-05-18  

最近项目在用ik,版本是IKAnalyzer2012_u5
请问一下:useSmart这个值是全局的吗?
我的IndexWriter用的是非智能分词器new IKAnalyzer(false),建立了一次索引后,我又创建了一个智能分词器并用它做了一次分词处理,然后IndexWriter建立的索引都是走的智能分词,是不是有bug?

Java代码
    public static void write() throws CorruptIndexException, LockObtainFailedException, IOException { 
//创建的是非智能分词,结果是非智能分词,结果是:中国/黄海/海军/军演/,没有问题。 
        IndexWriter writer = new IndexWriter(FSDirectory.open(file), new IndexWriterConfig(Version.LUCENE_36, new IKAnalyzer(false))); 
        Document doc = new Document(); 
        Field field = new Field("title", "中国黄海军演", Store.YES, Index.ANALYZED); 
        doc.add(field); 
        try { 
            writer.addDocument(doc); 
            writer.commit(); 
        } catch (CorruptIndexException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
        } catch (IOException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
        } 
//创建了一个智能分词器,使用这个分词器做了一次分词处理 
        Analyzer ik = new IKAnalyzer(true); 
        TokenStream ts = ik.tokenStream("",  new StringReader("联合国儿童基金会")); 
        CharTermAttribute att = (CharTermAttribute) ts.getAttribute(CharTermAttribute.class);  
        while (ts.incrementToken()) {  
          System.out.print(att.toString()+"/"); //打印分词结果 
        } 
//还是之前的indexWriter,这次建立的索引都是智能分词的结果。结果为:联合国儿童基金会,就一个词了,有问题,非智能分词结果应该是:联合国儿童基金会/联合国/联合/国/儿童/基金会/基金 
        Document doc1 = new Document(); 
        Field field1 = new Field("title", "联合国儿童基金会", Store.YES, Index.ANALYZED); 
        doc1.add(field1); 
        try { 
            writer.addDocument(doc1); 
            writer.commit(); 
        } catch (CorruptIndexException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
        } catch (IOException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
        } 
        writer.close(); 
    } 
不知道我说清楚了没有。
39 楼 awl910213 2013-05-09  
linliangyi2007 写道
loker_025 写道
博主好!感谢博主无私奉献以及及时更新,我在配置4.0solr的时候出现如下错误。
Caused by: java.lang.RuntimeException: Can't set positionIncrementGap on custom analyzer class org.wltea.analyzer.lucene.IKAnalyzer
	at org.apache.solr.schema.FieldType.setArgs(FieldType.java:159)
	at org.apache.solr.schema.FieldTypePluginLoader.init(FieldTypePluginLoader.java:127)
	at org.apache.solr.schema.FieldTypePluginLoader.init(FieldTypePluginLoader.java:1)
	at org.apache.solr.util.plugin.AbstractPluginLoader.load(AbstractPluginLoader.java:190)
	... 34 more

调查代码发现solr报错的地方
 if (positionInc != null) {
      Analyzer analyzer = getAnalyzer();
      if (analyzer instanceof SolrAnalyzer) {
        ((SolrAnalyzer)analyzer).setPositionIncrementGap(Integer.parseInt(positionInc));
      } else {
        throw new RuntimeException("Can't set positionIncrementGap on custom analyzer " + analyzer.getClass());
      }
      analyzer = getQueryAnalyzer();
      if (analyzer instanceof SolrAnalyzer) {
        ((SolrAnalyzer)analyzer).setPositionIncrementGap(Integer.parseInt(positionInc));
      } else {
        throw new RuntimeException("Can't set positionIncrementGap on custom analyzer " + analyzer.getClass());
      }
      initArgs.remove("positionIncrementGap");
    }

analyzer instanceof SolrAnalyzer,看了下IK的源码,IKAnalyzer是继承lucene的Analyzer而导致报错。是我配置问题吗?还是我版本有问题?
感谢博主!



IKAnalyzer没有继承SolrAnalyzer,就如同StandardAnalyzer一样。你看一下solr4.0中如何配置StandardAnalyzer吧

麻烦说下怎么配置?我的配置里必须要有这个positionIncrementGap
38 楼 Iloseyou 2013-04-26  
爱上了你就等于爱上了错
分词结果出现2次  爱上 上了
37 楼 deepeye 2013-04-08  
林老师,请问IK Analyzer 2012 FF版本在solr4.2版可以正常使用吗
36 楼 a57595135a 2013-04-08  
大侠solr 4.2中 useSmart 不管用了。

<fieldType name="text_cn" class="solr.TextField">
<analyzer type="index" class="org.wltea.analyzer.lucene.IKAnalyzer"  useSmart ="true" />
<analyzer type="query" class="org.wltea.analyzer.lucene.IKAnalyzer"  useSmart ="true" />
</fieldType>
35 楼 Java_大猫 2013-03-08  
Iloseyou 写道
Java_大猫 写道
Iloseyou 写道
Java_大猫 写道
Java_大猫 写道
你好,我扩暂词库 失效啊 不起作用。
http://blog.sina.com.cn/s/blog_4c9d7da201013wv2.html
代码完全参考这个做的
为什么呢?请帮忙


对不起LZ,是我的疏忽,问题解决了

google里下载了最新版本FF hf1还是不起作用哦。。。


你需要在web-inf 下自己创建classes文件把 xml 和dic 放到里面就可以了

ok 可以了

同义词过滤你怎么配置的?
34 楼 Iloseyou 2013-03-08  
Java_大猫 写道
Iloseyou 写道
Java_大猫 写道
Java_大猫 写道
你好,我扩暂词库 失效啊 不起作用。
http://blog.sina.com.cn/s/blog_4c9d7da201013wv2.html
代码完全参考这个做的
为什么呢?请帮忙


对不起LZ,是我的疏忽,问题解决了

google里下载了最新版本FF hf1还是不起作用哦。。。


你需要在web-inf 下自己创建classes文件把 xml 和dic 放到里面就可以了

ok 可以了
33 楼 Java_大猫 2013-03-07  
Iloseyou 写道
Java_大猫 写道
Java_大猫 写道
你好,我扩暂词库 失效啊 不起作用。
http://blog.sina.com.cn/s/blog_4c9d7da201013wv2.html
代码完全参考这个做的
为什么呢?请帮忙


对不起LZ,是我的疏忽,问题解决了

google里下载了最新版本FF hf1还是不起作用哦。。。


你需要在web-inf 下自己创建classes文件把 xml 和dic 放到里面就可以了
32 楼 Java_大猫 2013-03-07  
Iloseyou 写道
Iloseyou 写道
Java_大猫 写道
Java_大猫 写道
你好,我扩暂词库 失效啊 不起作用。
http://blog.sina.com.cn/s/blog_4c9d7da201013wv2.html
代码完全参考这个做的
为什么呢?请帮忙


对不起LZ,是我的疏忽,问题解决了

google里下载了最新版本FF hf1还是不起作用哦。。。

lucene使用了4.1版本

我的分词配置完了,我现在想知道 升级到4.1后。filter 那里怎么去配置,尤其同义词的部分
31 楼 Iloseyou 2013-03-07  
Iloseyou 写道
Java_大猫 写道
Java_大猫 写道
你好,我扩暂词库 失效啊 不起作用。
http://blog.sina.com.cn/s/blog_4c9d7da201013wv2.html
代码完全参考这个做的
为什么呢?请帮忙


对不起LZ,是我的疏忽,问题解决了

google里下载了最新版本FF hf1还是不起作用哦。。。

lucene使用了4.1版本
30 楼 Iloseyou 2013-03-07  
Java_大猫 写道
Java_大猫 写道
你好,我扩暂词库 失效啊 不起作用。
http://blog.sina.com.cn/s/blog_4c9d7da201013wv2.html
代码完全参考这个做的
为什么呢?请帮忙


对不起LZ,是我的疏忽,问题解决了

google里下载了最新版本FF hf1还是不起作用哦。。。

相关推荐

Global site tag (gtag.js) - Google Analytics