[lucene] 增量索引的仅仅设置false吗?

kexzcle 2010-02-04
IndexWriter writer = new IndexWriter(indexDir,new Analyzer(),true)

仅是简单的将create参数设为false,搜索结果是重复的?请问是什么原因?
还是增量索引不仅仅这么简单设置!
需要自己写方法。。?
kexzcle 2010-02-04
用一个文本记录当前已做索引的最后一个ID,
下次做索引,从此文件获取ID,
从它的下一个ID进行做索引追加到原来的索引文件中.

这样做增量是合理的是么? 代码应该怎么具体实现呢?

illu 2010-02-04
如果增量索引和查询属于同一JVM
IndexReader需要reopen

感觉你那样实现不是很合理
确实新增的可以追加至索引 
那么修改的 删除的数据呢 也应该与索引同步吧?
kexzcle 2010-02-04

IndexReader需要reopen

是什么意思?是可以解决搜索重复记录么?

现在索引已经有原来和新索引 2次的记录啦
illu 2010-02-05
现在索引已经有原来和新索引 2次的记录啦

你是直接add的吗  没有把原来的document删除么?
要不怎么是2次么?

reopen是IndexReader的方法 会加载改变的索引
kexzcle 2010-02-05
illu 写道
现在索引已经有原来和新索引 2次的记录啦

你是直接add的吗  没有把原来的document删除么?
要不怎么是2次么?

reopen是IndexReader的方法 会加载改变的索引

是的,我是直接Add的,应该删除原有的是么?
也是,一直增加的话索引库很多无用的数据还存留了。

那reopen是什么时候调用的。 我的代码中没用到IndexReader啊

请教!

illu 2010-02-05
=.=
是这样的
IndexWriter负责对索引的增删操作
IndexSearcher负责对索引的查询操作
而创建IndexSearcher的时候需要用到IndexReader
Directory d = new SimpleFSDirectory(new File("d:/xxx"));
IndexReader reader = IndexReader.open(d);
IndexSearcher searcher = new IndexSearcher(reader);

当IndexWriter对索引有所改变时
IndexReader应该reopen来载入修改的索引

还有就是你新增了 肯定要把以前的干掉么
imjl 2010-02-05
索引一旦变化,只是提交变化信息,那么commit就可以

luckaway 2010-02-05
增量就是这样做的
至于数据重复,可能是你重复索引数据的原因!
你应该每索引一个document就用日志记录下它的ID。



illu 2010-02-05
imjl 写道
索引一旦变化,只是提交变化信息,那么commit就可以


我测试过 如果只是writer commit
而 reader不reopen 从而得到searcher的话

commit的数据也是查询不到的
Global site tag (gtag.js) - Google Analytics