lucene.net学习七——分词

 

分词的重要性对于一个搜索引擎来说是相当重要的,英文的分词相对简单,因为英文的每个单词都具有天然的分隔符,但当遇到中文时,就显得无能为力了。

中文是世界上最复杂的语言之一,不同的字在不同的词语中可能代表不同的意思,一句话的意思不能简简单单的看汉字的意思,还有结合上下文语境,因此要让计算机理解中文是比较困难的。

前面学习的所有例子中都提到了分词,都用的是lucene.net自带的标准分析器。代码如:

//构造一个多Field查询
Query query = MultiFieldQueryParser.Parse(Lucene.Net.Util.Version.LUCENE_29, "郭靖", fields, clauses,
new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29));

这个标准的分析器,实际上进行的是单字分割,对于一个建好的索引,用NLuke打开,如下图:

原始数据源中有文件名:吸星大法、郭靖和乔峰、独孤九剑这三个文件名,对文件名建索引后,发现都被切割成一个个汉字了,而且像‘和’这样的汉字是没有多大意义的,可以去掉。

可见,lucene自带的标准分词不够合理。

lucene也实现了一个二分法算法的中文分词CJKAnalyzer,这个类所在的程序集为:Lucene.Net.Contrib.Analyzers.dll,命名空间是:Lucene.Net.Analysis.CJK;

修改代码:

    Analyzer analyzer = new CJKAnalyzer();

在建立索引后,用NLuke查看分词的情况,如下图:

 

发现此分词算法,把2个汉字当作一个词来处理,感觉也不是很好。

转载于:https://www.cnblogs.com/guoyuanwei/archive/2012/04/02/2429887.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值