2011-06-30 94 views
1

我需要使用Lucene.NET在mysql數據庫上進行全文搜索。我必須使用InnoDB,因此Lucene是我選擇的搜索提供者。Lucene.NET索引的實時更新

有2個需要被索引的字段,它們是varchar(200)和varchar(2000)。但問題是,一旦插入記錄,應該可以全文搜索記錄。所以我必須同時將記錄插入lucene索引和db。

那麼做到這一點以及單次插入需要多長時間?這是一個Web應用程序,我期望每秒插入500個。

如果您在完成之前讓我知道您的技術。如果這是不可行的,我唯一的選擇是回到SQLServer使用其全文搜索。 :(

PS

我並不擔心數據庫插入性能。但我不知道的是,Lucene的將採取更新S指數的時間。

+2

(200 + 2000)* 500 * 60 * 60 * 24/1024/1024/1024 =每天插入88 GB數據。總會有500個插入/秒,還是一個峯值? – mathieu

+0

是高峯期,我需要許多插入而不剎車的系統手柄。 200和2000是最大限制(字段是博客文章的標題和文本),所以它們在每個記錄中都不會很長。實際上500 /秒可能非常少見,但我需要知道它是否可以用lucene來處理它 – Amila

+1

您是否考慮過使用SOLR。這樣你有一個專門的搜索守護進程運行。 http://lucene.apache.org/solr/ – danielrsmith

回答

1

是的,這是可行的,使用Lucene的NearRealtimeSearch功能。

http://wiki.apache.org/lucene-java/NearRealtimeSearch

但用那種要處理量,你必須巧妙地管理指數優化/當你提交,如果你想保持體面的搜索表演融合。

+0

感謝隊友:)指出那一個 – Amila

1

Lucene的。 Net或SQLServer的,除非你找到一個聰明的辦法,你有麻煩與43,200,000文檔/天

+0

ooops ...我從來沒有想過這些數字會加起來達到43 mil :(無論如何,這將是高峯,但不是平均水平。無論如何,我做了一些測試與SQL服務器與全文索引和我的SQL沒有和插入速度是好的我不擔心數據庫我可以找到一種方法使他們工作,但我擔心lucene,它會傷害插入性能? – Amila

+0

使用四頻3GHz機器(3GB RAM),我能夠索引750M文檔/天。(不在生產​​env。僅用於速度測試目的) – Anonymous

0

一些指導原則在這裏:

  • 在高峯期插入大量數據後,立即在索引中提供這些數據是否合理?無法執行計劃任務嗎?
  • 你在這些領域做什麼樣的搜索?如果它真的很簡單,是不是lucene矯枉過正?
  • 您告訴我們關於寫入卷的內容,但讀取內容如何?它看起來會有相當多的數據,但是如果它沒有被深入搜索,是不是select table from table where col like'%search%'足夠了?

你應該真的得到一個具有不同索引策略的概念證明,並且通過壓力測試來找出哪一個最適合。