最近在搞Lucene,其中官方自带的中文分词器,对中文的支持我觉得相当的不好,只能说它支持,在分词上还不能满足应用的需要。

     然后就寻觅到了这个庖丁解牛分词器,提供自定义字典、实现了Lucene接口的分次器,上手配置都是相当的容易,不过出现点问题在Windows下配置字典目录的环境变量貌似没效果,还是得去配置资源文件。

    先后使用了StandardAnalyzer/IKAnalyzer还有就是PaodingAnalyzer了,使用相同的查询器Query queryTitle = new QueryParser来实现这几个分词器,前两种在查询如“四川成都”这种多字的情况没有PaodingAnalyzer查的准确,但是感觉PaodingAnalyzer查询还是会慢一些,可能是因为跑字典的原因。

   我开6个线程来索引W条数据,在索引的时候,相同代码,使用之前两个分词器不会内存溢出,换做庖丁解牛的分词器会导致内存溢出。当然这个使用虚拟机设置时可以避免的,比如设置运行类的堆大小,通常情况都是抛出了Java Heap Space,而且自己多是在数据库查询的时候抛出的,即便从批量的1000减到100也会抛,所以这个还是和虚拟机的设置有很多关系。

比如: -Xms64m -Xmx256m

    定义字典可以更好的将产品贴合到需求中去,损失一定效率也是可以接受的,目前还没有试过在海量数据下的Lucene的效率和性能,看评论是褒贬不一。

庖丁解牛的SVN:http://paoding.googlecode.com/svn/trunk/paoding-analysis

发表评论