在使用IndexReader.open()创建一个reader后
我一直在使用这个reader 创建IndexSearcher进行查询 但是另外的线程使用IndexWriter 去改变索引里的内容 然后commit
如果reader不调用reopen方法的话 那么查询的结果是不会收到IndexWriter的影响的 而调用reader的reopen方法后 会返回一个新的IndexReader(前提是索引内容已经改变 如果索引内容未变 那么 reopen返回的还是原来的reader)
用这个新的reader可以查询到 更改了的信息 以上是我对IndexReader 和 IndexWriter的测试结果
我想请教一下 reader调用open方法都做了些什么?
根据以上测试结果我可不可以理解为open就是将索引文件的内容加载至内存了?
谢谢
我一直在使用这个reader 创建IndexSearcher进行查询 但是另外的线程使用IndexWriter 去改变索引里的内容 然后commit
如果reader不调用reopen方法的话 那么查询的结果是不会收到IndexWriter的影响的 而调用reader的reopen方法后 会返回一个新的IndexReader(前提是索引内容已经改变 如果索引内容未变 那么 reopen返回的还是原来的reader)
用这个新的reader可以查询到 更改了的信息 以上是我对IndexReader 和 IndexWriter的测试结果
我想请教一下 reader调用open方法都做了些什么?
根据以上测试结果我可不可以理解为open就是将索引文件的内容加载至内存了?
谢谢
怎么说呢,拿数据库的ResultSet来说吧,它这个相当于取得resultset时,指定了in_sensintive(单词忘了)和readonly。就是说,数据库的更改不反应到游标以及只读方式打开游标。
如果索引好大 上G的话 加载到内存是不太可能的 所以还是没搞明白open到底是干了什么