我試圖原型,使用非常不穩定索引的數據源(論壇,社交網絡等)的索引/搜索應用,這裏有一些性能要求,如何處理非常頻繁地更新Lucene索引
非常快的週轉時間(我的意思是,任何新的數據(如在論壇上一個新的消息)應該是在搜索結果中可很快(不到一分鐘))
我需要定期丟棄舊文件,以確保搜索結果不會過時。
最後但並非最不重要的一點,搜索應用程序需要有響應。 (100毫秒數量級上的延遲,並至少應支持10 QPS)
所有的我都可以當前/可滿足W 0使用Lucene的要求(這將讓我滿足所有1,2和3),但我期待着未來的其他需求(比如搜索相關性等),Lucene更容易實現。不過,由於Lucene的設計目標遠比我目前正在使用的更復雜,所以我很難滿足我的性能要求。
這裏有一些問題,
a。我讀過IndexWriter類中的optimize()方法很昂貴,不應該被頻繁更新的應用程序使用,有什麼選擇?
b。爲了進行增量更新,我需要不斷提交新數據,並且不斷刷新索引閱讀器以確保它具有可用的新數據。這些將影響上面的1和3。我應該嘗試重複索引嗎?解決這個問題的一些常見方法是什麼?
c。我知道Lucene提供了一種刪除方法,它可以讓你刪除所有匹配某個查詢的文檔,在我的情況下,我需要刪除所有年齡大於某個特定年齡的文檔,現在有一種方法是爲每個文檔添加一個日期字段文檔並用它來稍後刪除文檔。是否可以對文檔ID進行範圍查詢(我可以創建自己的ID字段,因爲我認爲由lucene創建的字段不斷更改)刪除文檔?比比較表示爲字符串的日期更快嗎?
我知道這些都是非常開放的問題,所以我沒有在尋找詳細的答案,我會盡力將您的所有答案作爲建議,並用它們來通知我的設計。謝謝!如果您需要其他信息,請告訴我。