浏览:245 2008-07-03 20:08 来自 雨中漫步的太阳      :
如题,我通过docid去删除一个Document,程序执行也没有报任何的错误,但是就是删除不来哦, 我的索引是使用的RAMDirectory和FSDirectory结合的方式来的,但是我根据docid删除的方式是IndexReader类里的,但是我能确定的是,我要删除的Document 绝对不在RAMDirectory中.
更加奇怪的问题是,当使用了我自定义的flash方法后,就可以删除掉了,我的flush的方法仅仅是将RAMDirectory和FSDirectory合并,当然addIndex 隐含的调用了optimeze方法,也就说我删除的时候必须调用优化操作,删除才起效果,这个是为什么呢,有知道的话,麻烦告诉我下.
当然如果索引小的话,也就无所谓了 但是我的索引很大,总不能删除一条信息就要调用一次optimeze吧
收藏 楼主
  3个月前  雨中漫步的太阳      :
补充下,当搜索的时候,我搜索的是两个类,RAMDirectory 和 FsDirectory
1楼 回到顶楼 
  3个月前 【组长】 Birdshover      :
实际上Lucene里的操作都是用个缓冲的,并不是实时的硬盘操作。相当于多了一个资源池。和下载软件里满多少M才往硬盘上写诗一个道理的。所以,有时候需要显式得调用flush方法。而执行optimeze则是进行物理删除了,无法恢复
2楼 回到顶楼 
  3个月前  雨中漫步的太阳      :
如楼上所言,我的问题解决了呵呵 谢谢
3楼 回到顶楼 

注册用户登录后才能回复,登录注册
> 返回“Lucene.Net”


其他话题

相关内容

相关链接

1 29044