簡體   English   中英

Lucene近實時搜索

[英]Lucene Near Realtime Search

我希望通過使用“近實時搜索”等一些功能來提高搜索系統的速度,從而加快索引的開放速度。

誰能告訴我使用以下代碼中的一個或另一個有什么區別和優點:

IndexReader newIndexReader = IndexReader.openIfChanged(oldReader);

IndexWriter writer; // create an IndexWriter here
...
IndexReader reader = writer.getReader();

請注意,在第一種情況下,我不需要indexWriter與IndexReader在同一個進程中。

首先, writer.getReader()僅在3.6版本中可用,但在所有v4( writer.getReader() ,...)版本中都不存在。 因此,如果您關心可維護性,則不應使用它。

現在,回答你的問題。 writer.getReader()刷新所有掛起的寫入並無條件地打開一個新的讀取器(另外還有一些其他限制 - 請參閱方法javadoc)。 如果進行了任何更改,則IndexReader.openIfChanged(oldReader)僅打開新的閱讀器,否則返回舊閱讀器。

根據我的口味,從作家那里打開一個讀者也在概念上是錯誤的(Lucene曾經有過這個問題的其他案例,例如曾經有可能使用讀者刪除文檔)。

如果您在兩者之間進行選擇,我認為毫無疑問使用哪種方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM