2008-11-07 59 views
12

Lucene.Net適合作爲頻繁更改內容的搜索引擎嗎?Lucene.Net適合作爲頻繁更改內容的搜索引擎嗎?

或者更具體地說,任何人都可以就lucene.net索引更新的速度給出主觀意見。搜索經常變化的內容的任何其他方法都會很好。

我們正在開發一個論壇。論壇帖子將經常添加到論壇庫中。我們認爲我們需要非常快速地將這些帖子添加到lucene索引(< 0.5s)以便可供搜索。最初在版本庫中會有大約5E6個帖子。假設搜索引擎運行在非特殊的服務器上(我知道這非常含糊!)。

有關解決搜索經常變化的內容問題的其他建議表示讚賞。論壇帖子需要在可變數量的已命名標籤上進行搜索(標籤名稱和值必須匹配)。基於SQL的方法(基於Toxi模式)並不能提供我們想要的性能。

+0

即使問題已經得到解答,您可能需要考慮一個服務器來處理搜索(如果out-of-process是一個選項),像[Solr](http://lucene.apache.org/ solr /)或[elasticsearch](http://www.elasticsearch.org/);既處理索引的創建和管理,也處理複製,分片等事情,這些在處理大/多索引時很重要。 – casperOne 2011-05-10 17:23:12

回答

9

Out論壇(http://episteme.arstechnica.com)使用Lucene作爲搜索後端,因此它是可行的。帖子的索引速度並不像你想的那麼快,但我們可以通過加強索引硬件和使用更智能的緩存策略來解決這個問題。

這個問題的一般答案是:它取決於你的寫/更新模式。論壇相對容易,因爲大多數內容是新的,現有內容更新頻率較低。

對於一個論壇,我建議有一個「歸檔」索引和一個「活」索引。實時索引可能包括最後一天,每週,每年的帖子,而歸檔索引將包含大量帖子,可能不會再次被觸及。所以當有人創建一個新帖子時,它最初將在實時索引中被索引。稍後,某些批處理作業將清除實時索引,並將所有內容重新編入歸檔。

Lucene非常擅長跨多個索引進行查詢。你應該濫用這種能力。 :)

4

Lucene.Net速度非常快,但是有很多事情會在使用錯誤時減慢查詢速度。我強烈建議您閱讀Erik Hatcher和OtisGospodnetić的書Lucene in Action。它包含關於性能測試和調優的非常好的一章。