作者:范婷柏 | 来源:互联网 | 2023-07-20 13:05
IndexReader.delete(int docNum)就像foxpro一样只是打个删除标记,并没能真正删除.
还有更新不能直接更新,一定要先删再加一个吗?
5 个解决方案
其实我用的delete(Term term) 方法更多,不需要找到docNum,但是两个方法的确都只是做删除标记的
因为整理的速度比较慢。更新也是只能先删除再添加
我一般是在这样操作次数达到一个值时(如100次),我就使用IndexWriter打开一个(boolean create == false啊,不然就空了)
然后调用 optimize() 就可以了
多谢 ChDw(米)提醒了,我用optimize() 清空了好几回.
英雄,且留步!
IndexReader.delete(new Term("field","爬"));能把所有包含"爬"的索引删除.
但包含两个字以上IndexReader.delete(new Term("field","爬山"));却没有效果,难道这是因为lucene对中文支持不好?请问这种问题如何解决.
这个我没有怎么用过,通常我都只是删除一个记录的。是不是你的Lucene的版本太低,我觉得只有在1.4再之后的的版本支持比较好,原来的都比较多问题