lucene3与paoding

本文探讨了Lucene的应用与Paoding分词器的配置调整,包括如何为特定需求定制词库并选择合适的词典编译器以提高搜索准确性。
[size=medium]最近又开始研究lucene了 真他妈的折腾 太久没用都基本忘光了。

[b]正文:[/b]

1.paoding的jar包只支持了lucene2的,官方上说如果要用for lucene3的,需要直接从svn check下来,这里需要注意。

2.由于功能上的需要,自己加了一个健康类的词库,这里需要注意两点:

a.加了词库后,需要把class/dic里面的.compiled文件夹删除,因为paoding在第一次执行时会把所有的词库都编译一次,似乎这么做是为了提高解析的执行效率。
b.词库编译最好使用SortingDictionariesCompiler这个类编译,需要修改paoding-analyzer.properties,把其中paoding.analyzer.dictionaries.compiler这个值去掉注释。

之所以这么做是因为如果使用默认的MostWordsModeDictionariesCompiler这个类编译的话,有些长词都被切分为小词,对于搜索,可能导致结果不准确。

如:“朝阳区慈济医院”这个词如果用MostWordsModeDictionariesCompiler编译词库,切分出来的结果可能是“朝阳”“朝阳区”“慈济”“医院”但是“朝阳区慈济医院”就被吃了,但是如果用SortingDictionariesCompiler编译词库,切分出来的结果可能是“朝阳”“朝阳区”“慈济”“医院”“朝阳区慈济医院”,个人感觉这样比较符合要求。[/size]

代码上的区别:
SortingDictionariesCompiler
Dictionary vocabularyDictionary = dictionaries.getVocabularyDictionary();
File vocabularyFile = new File(compiledDicHomeFile, "vocabulary.dic.compiled");
sortCompile(vocabularyDictionary, vocabularyFile, charsetName);


MostWordsModeDictionariesCompiler
Dictionary vocabularyDictionary = dictionaries.getVocabularyDictionary();
File vocabularyFile = new File(compiledDicHomeFile, "vocabulary.dic.compiled");
compileVocabulary(vocabularyDictionary, knife, vocabularyFile, charsetName);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值