Java堂  


Lucene创建索引时出现的segments或deletable拒绝访问异常的原因

归档在: JavaPlateform, SearchEngine — Jet @ 10:54 下午
Tags:
原文出处: http://www.javatang.com/archives/2007/06/14/5433176.html
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

今天在使用Lucene生成索引的时候,总是在索引的过程中出现下面的异常信息:

java.io.IOException: Cannot rename …\segments.new to …\segments
……


java.io.IOException: Cannot rename …\deletable.new to …\deletable
……

逐一检查了代码、系统目录权限等方面均没有发现问题的所在。后来Google了一下,终于知道原因在杀毒软件的病毒防火墙上面。因为Lucene在生成索引的过程中频繁的创建合并文件,这样病毒防火墙不断地进行监测分析,这个时候就会锁定某个文件,造成Lucene无法进行操作。貌似卡巴斯基的这个问题最严重,呵呵

另外如果关闭病毒防火墙之后依然出现上述异常的话就设置每500条数据就使用optimize()方法对索引优化一次;如果依然出现问题的话那应该更新你的Lucene和lucene analyzers包,因为Lucene2.0有这个bug。我将两个包都更新到最新的2.1版本(2007.4.17)之后运行程序一直没有出现上面的异常提示。

最后总结一下解决的方法,逐一按照一下步骤进行操作:

1) 关闭病毒防火墙;
2) 每500条数据就使用optimize()方法对索引优化依次;
3) 更新Lucene和Analyzers为2.1版本。

参考资料:
Lucene 的一个错误 和一个文件太多
各类读者问题汇总

Lucene中文分词 “庖丁解牛”

归档在: JavaPlateform, SearchEngine — Jet @ 3:56 下午
Tags: ,
原文出处: http://www.javatang.com/archives/2007/03/03/5603105.html
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

一位网名为Qieqie的网友在JaveEye上发布了自己写的Lucene中文分词包-庖丁解牛。

高效率:我的赛扬PC 1 秒解析 >>> 20000汉字的词语 (实际测试结果数据,可达1秒10万+汉字。)
高可维护性:使用“庖丁”隐喻,形象明晰
高灵活性,可扩展:OOD

主要发布文件如下:

Paoding.rar
中文分词“庖丁解牛”,面向对象,高效率,高扩展性

HashBinaryDictionary.java.rar
原来的HashBinaryDictionary.java使用对第一个字符hash+二份查找。这个算法已经不错。但下面的更新使用了更好的策略。可连续hash词语的字符。理论上这个词典算法应该到达极致了。覆盖HashBinaryDictionary.java在com/sohospace/dictionary下

Main1.java.rar
对一个长度2185856的字符串(4,347,520字节)的分词效率测试。 下载解压后添加到源文件中

Lucene发布2.1版本

归档在: JavaPlateform, SearchEngine — Jet @ 3:26 下午
Tags:
原文出处: http://www.javatang.com/archives/2007/03/03/2611104.html
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

近日发现Lucene发布了最新的2.1版本,发布日期为2007年2月17日(春节前一天:))。由官方上公布的新闻中了解到这次更新最大的改变就是索引的格式发生了修改,新的索引格式2.1版本之前的Lucene无法进行读取,但是新版本的Lucene可以读取原来旧的索引文件。

这里是一份完整的更新列表文件。