2010-07-21 53 views
1

目前,我們有一個應用程序需要在〜2磨記錄上執行非常快的搜索。可擴展的自由文字和參數搜索(C#)

搜索需要同時搜索大型自由文本字段和不同範圍之間的整數/十進制字段以及各種函數/計算&排序。

目前,我們正在使用一個大的MSSQL數據庫,使用內置的自由文本引擎以及一些複製功能來移除事務表中的負載。

但是 - 正如您可能已經猜到的那樣,此解決方案不是最具可擴展性的。

我已經寫了一個基於Lucene的小型文檔存儲,結果一般都印象深刻,文本搜索時間不超過1/2秒(在100k條記錄上)。

困難的部分是參數搜索 - 我知道Lucene做基本的範圍匹配 - 但是我覺得我們需要更強大的東西。

我已經用db4o做了一個測試數據庫 - 它具有強大的查詢功能,但是這些查詢很慢 - 僅在10萬條記錄上佔用15秒 - 其中SQL對於自由文本&參數搜索需要大約1.5秒。

此外,我們的數據庫需要有一個小於10分鐘的更新分辨率,約有15%的記錄每天都在變化。我們的SQL服務器正在處理這個,但開始吱吱作響。

任何適當的技術指導&方法將不勝感激。

乾杯,戴夫

+0

你能否澄清你的意思是「需要更強大的東西」。關於Lucene參數搜索?這是相當強大的,應該適應大多數查詢要求。 – Mikos 2010-07-21 11:11:55

+1

在100k對象上花費15秒的db4o聽起來不像我們的數據庫。也許你想將你的代碼發佈到db4o論壇? http://developer.db4o.com/Forums.aspx我相信速度可以做些什麼。 – 2010-07-21 14:49:55

+0

爲什麼不使用SQL Server自己的全文搜索? – 2010-07-22 16:17:23

回答

0

LinkedIn寫了一個附加Lucene的叫bobo擴大,這可能是值得探討facted搜索查詢。但我認爲,如果你有一個絕對龐大的索引,那麼bobo纔是真正需要的 - 如果對100k文檔的搜索花費很長時間,那麼肯定會出現一些奇怪的現象。