`
shuany
  • 浏览: 255168 次
  • 性别: Icon_minigender_1
  • 来自: 中国
社区版块
存档分类
最新评论

转: solr中文分词

阅读更多

http://blog.csdn.net/aidayei/archive/2011/06/05/6526986.aspx

 

我在solr中尝试了以下三种开源中文分词器,其中两种都因为solr版本过高不能用,郁闷,后来将JAR包反编译,找到了原因,下面先简要说明一下三种开源中文分词器

庖丁解牛:google code上最后一次代码提交是2008.6月,不是很活跃,但用的人还很多

mmseg4j:google code上最后一次代码提交是2010.12月,应该还算活跃,采用MMSeg算法,有两种分词方法:Simple和Complex

IKAnalyzer:最近很活跃,2011.3月在google code上提交了一个版本

lucene于今年5月份出了3.2版,solr也对应出了3.2版,高版本有个不好的地方,就是开源的中文分词库,跟不上相应的更新速度,本人用的是3.1 版,在lucene中加入庖丁解牛中文分词器和IKAnalyzer最新版,都会报错。

错误原因如下(以IKAnalyzer为例说明):

不论是庖丁解牛还是IKAnalyzer,要把分词器放到solr中,需要经承solr中的BaseTokenizerFactory这个类,

 

  1. import java.io.Reader;  
  2.   
  3. import org.apache.lucene.analysis.TokenStream;  
  4. import org.apache.solr.analysis.BaseTokenizerFactory;  
  5. import org.wltea.analyzer.lucene.IKAnalyzer;  
  6.   
  7. public class ChineseTokenizerFactory extends BaseTokenizerFactory {  
  8.   
  9.     @Override  
  10.     public TokenStream create(Reader reader) {  
  11.         return new IKAnalyzer().tokenStream("text", reader);  
  12.     }  
  13.       
  14. }  

 

这个基类中实现TokenizerFactory接口,create就定义在这个接口中,但返回的类型是Tokenizer,而在solr3.1版本中Tokenizer是继承TokenStream的,所以这里需要强制转换才不会报错。而庖丁解牛就没那么简单了,需要修改源码才可以,庖丁解牛现在只支持到solr1.4版本

还有庖丁解牛都不能直接在lucene3.1中使用,代码不提示任何错误,但一运行就报错,不知道为什么原因,估计原因同上,需要修改源代码,有知道的,请转告

mmseg4j也要下最新版本,否则也会报错,具体配置如下:

把 mmseg4j-all-1.8.4.jar 放到 tomcat/webapps/solr/lib下,mmseg4j1.84包中的字典解压出来,放在solr.home/data目录下,修改solr配置文件:

 

  1. <fieldType name="textComplex" class="solr.TextField" positionIncrementGap="100" >    
  2.     <analyzer>    
  3.         <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="C:/apache/apache-solr-3.1.0/example/solr/data"/>    
  4.         <filter class="solr.LowerCaseFilterFactory"/>    
  5.     </analyzer>    
  6. </fieldType>    
  7. <fieldType name="textMaxWord" class="solr.TextField" positionIncrementGap="100" >    
  8.     <analyzer>    
  9.         <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" dicPath="C:/apache/apache-solr-3.1.0/example/solr/data"/>    
  10.         <filter class="solr.LowerCaseFilterFactory"/>    
  11.     </analyzer>    
  12. </fieldType>    
  13. <fieldType name="textSimple" class="solr.TextField" positionIncrementGap="100" >    
  14.     <analyzer>    
  15.         <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="C:/apache/apache-solr-3.1.0/example/solr/data"/>    
  16.         <filter class="solr.LowerCaseFilterFactory"/>    
  17.     </analyzer>    
  18. </fieldType>    

 

mmseg4j 在 solr 中主要支持两个参数:mode、dicPath。mode 表示是什么模式分词。dicPath 是词库目录,网上说可以默认在当前data目录下寻找,经测试好像不行,必须人工给出绝对路径,或许是高版本的问题吧,或许是我哪里设置错了,然后在 http://localhost:8080/solr/admin/analysis.jsp 可以看 mmseg4j 的分词效果,在Field的下拉菜单选择type,然后输入textComplex,特别是和CJK分词器作对比,很明显,CJK是solr官方自带的支持中日韩的分词器,它对中文是采用的二元分词

其实中文分词一直以来是很多人在研究的东西,怎么提高分词效率和匹配正确率是目标,里面的算法实现是它的核心,把它完全吃透,估计都可以写论文了,呵呵,由于时间有限,只是粗略拿来体验了一下。还有就是关于solr/lucene的搜索效率,优化索引,也是一个值得研究的课题。

参考资料:

1.http://blog.chenlb.com/2009/04/solr-chinese-segment-mmseg4j-use-demo.html

2.http://lianj-lee.iteye.com/blog/464364

3.http://www.blogjava.net/RongHao/archive/2007/11/06/158621.html

4.http://www.iteye.com/news/9637

5.http://blog.csdn.net/foamflower/archive/2010/07/09/5723361.aspx

突然发现IKAnalyzer在3.1.5版本中,已经实现了对solr的TokenizerFactory接口配置的支持,详见下面这篇文章:

http://linliangyi2007.iteye.com/blog/501228

分享到:
评论

相关推荐

    solr中文分词器

    Solr中文分词器是针对Apache Solr全文检索引擎在处理中文文本时的不足而设计的一种解决方案。Solr默认的分词策略主要针对英文文本,它以空格为分隔符进行分词,而对于中文这种没有明显分隔符的语言,就需要特定的...

    solr中文分词高版本

    "solr中文分词高版本"的标题表明我们在这里讨论的是适用于Solr 6.5及以上版本的中文分词解决方案,因为默认的Solr分词器可能不支持这些较高版本,或者在使用过程中会出现问题。 描述中提到的“网上提供的solr中文...

    solr中文分词jar包ik-analyzer 含class配置 ik-analyzer-7.5.0

    Ik Analyzer是一款针对Java平台设计的、专门用于中文分词的开源工具,它在Solr中扮演着至关重要的角色。 标题提到的"ik-analyzer 7.5.0"是Ik Analyzer的一个特定版本,这个版本包含了对Solr的支持,并且提供了类...

    solr 中文分词

    因此,为了准确地理解和检索中文内容,我们需要进行分词,将连续的汉字序列切割成具有独立意义的词汇。这有助于提高搜索结果的相关性和精度。 2. **Solr 的分词器** Solr 内置了多种分词器,包括 ...

    solr ik分词器

    Solr是中国最流行的开源搜索引擎平台之一,而IK Analyzer是一款针对中文的高性能分词器,尤其在处理现代汉语的复杂情况时表现出色。本教程将详细解释如何在Solr中安装和使用IK分词器。 首先,让我们理解一下什么是...

    solr ik中文分词

    在处理中文文本时,由于中文的特殊性(词与词之间没有明显的分隔符),需要使用专门的分词器进行预处理,将连续的汉字流分割成有意义的词语,这个过程称为中文分词。IK Analyzer(简称IK)就是为了解决这个问题而...

    solr分词器

    2. 分词:根据分词规则将文本切分成一个个单独的词语。 3. 过滤:对分词结果进行过滤,去除停用词(如“的”、“和”等常见但无实际意义的词)和其他不需要索引的词汇。 4. 转换:对某些词语进行词形还原或词性标注...

    solr 中文分词其IKAnalyzer 支持solr版本5.X-7.X

    描述中提到的"solr中文分词器 IKAnalyzer 支持solr版本5.x到7.x 亲测可用,我用的是7.2版本"进一步证实了IKAnalyzer在Solr 7.2版本中的实际应用,这为其他用户提供了信心,确保了在不同Solr版本下的稳定运行。...

    ikanalyzer-solr中文分词包兼容solr7.5

    ikanalyzer-solr中文分词包是专门为Apache Solr设计的一款强大的中文分词工具,它在处理中文文本时能够有效地进行词语切分,提高搜索准确性和效率。标题中提到的"ikanalyzer-solr中文分词包兼容solr7.5"意味着这个...

    solr 5.x 和 6.x 最新中文分词器

    一、Solr中文分词器概述 在处理中文文档时,由于中文句子没有明显的分隔符,如英文的空格,因此需要使用分词器进行预处理。Solr支持多种中文分词器,如IK Analyzer、Smart Chinese Analyzer、Paoding Analyzer等,...

    lucene、solr中文分词器

    这些分词器专门针对中文的特点进行了优化,能够准确地将连续的汉字序列切分成具有实际意义的词语,这一过程称为中文分词。 ikanalyzer和IK Analyzer是基于字典的分词器,它们维护了大规模的中文词汇库,通过查找...

    solr7.3.1中文分词器

    描述中提到的"solr7.3.1种需要的中文IK分词器",IK(Intelligent Chinese Analyzer)分词器是一个强大的、成熟的中文分词组件,广泛应用于各种Java开发的搜索系统中。IK分词器支持多种分词模式,包括精确模式、全...

    solr中文分词器ik-analyzer-solr7.x

    **Solr中文分词器IK Analyzer** Solr作为一款强大的全文搜索引擎,对于中文处理有着特殊的需求,因为中文的语义分析比英文复杂得多。IK Analyzer是专门为了解决这个问题而设计的,它是一款开源的、高性能的、适用于...

    solr全文检索+IK分词器

    IK分词器是针对中文的全文检索优化工具,其主要任务是对中文文本进行分词,将连续的汉字序列拆分为有意义的词汇。IK分词器具有以下特点: 1. **灵活的插件架构**:IK支持自定义分词策略,用户可以根据需求添加或...

    solr中文分词器文件及配置.zip

    solr搜索框架的中文分词器文件及配置详解供大家下载,亲测可用.解压出来的jar包放到apache-tomcat-9.0.20\webapps\solr\WEB-INF\lib下(Tomcat项目里solr项目)其他三个文件放到apache-tomcat-9.0.20\webapps\solr\...

    JAVA+Solr分词项目工程实例Java实用源码整理learns

    2. **分词**:Solr支持多种分词器,如中文分词器,能将中文文本拆分成有意义的词语,便于搜索。 3. **多字段搜索**:Solr允许对多个字段进行独立或组合的搜索,提供了丰富的查询语法。 4. **高亮显示**:搜索结果...

    solr(中文分词器)集群

    IK分词器(Intelligent Chinese Analyzer for Solr)是针对Solr优化的中文分词工具,它支持多种分词模式,包括精确模式、全模式、关键词模式等,以满足不同场景的需求。在Solr的`schema.xml`配置文件中,你可以指定...

    solr cloud6.1.0拼音分词

    拼音分词是处理中文文本的一种策略,它将汉字转换为其对应的拼音,从而允许用户通过输入拼音来搜索相关的中文内容。 在Solr中,拼音分词主要依赖于特定的分析器和过滤器。这些组件在索引和查询阶段处理文本,将汉字...

Global site tag (gtag.js) - Google Analytics