2011-03-15 49 views
3

我的數據庫中的文檔具有其他字段中的名稱和說明。我希望允許用戶通過提供一些關鍵字來搜索這些文檔。應使用關鍵字在名稱和說明字段中進行查找。我已閱讀mongoDB documentation on full text search,如果要在文檔的名稱字段中搜索關鍵字,它看起來非常好,很容易。但是,說明字段包含自由格式的文本,最多可能需要2000個字符,因此每個文檔可能會有幾百個字。我可以像名稱一樣對待它們,只是將整個描述拆分爲單獨的單詞,並將其另存爲另一個類似標籤的數組(按照Mongo示例),但它看起來像一個可怕的想法 - 每個文檔的大小几乎可以翻倍,加上有點,逗號等字符。請建議在mongoDB中進行全文搜索的最佳解決方案

我知道有專門的解決方案,正是這種問題,我只是看着Lucene.Net,我也看到了Solr在這裏和那裏提到。

我應該在mongoDB中實現這個搜索功能還是應該使用專門的解決方案?目前我只有一個mongod實例和一個web服務器實例。我們可能需要稍後擴展,但現在這只是我使用的。我會很感激有關如何實現此功能的任何建議。

+0

由於簡單和需要快速開發,我正在考慮MongoDB的一個新項目。我目前正在查看Sphinx http://sphinxsearch.com,它將提供一種方法來提取文檔ID,然後使用它從MongoDB中提取結果文檔。如果MongoDB將來添加全文搜索,我認爲這會建立一條平穩的路徑。任何人都有這方面的經驗? – condiosluzverde 2011-05-07 15:13:18

回答

1

如果按照記錄的方法將文本分割到數組中是不可行的(我可以理解你的擔憂),那麼我認爲你應該研究一個專門的解決方案。從MongoDB的文檔

報價:

MongoDB的具有有趣的功能 ,使得某些搜索功能 容易。也就是說,這不是專用的 全文搜索引擎。

因此,對於更高級的全文搜索功能,我認爲專用引擎更適合。我沒有這方面的經驗,所以我不能提供很多來自這裏的建議,除了我的想法會是,如果我在同一條船上:

  • 多少工作涉及使用專門的全文搜索引擎,而不是MongoDB的功能?
  • 確實增加了更多的複雜性/值得嗎?
  • 使用MongoDB會更快更簡單嗎?只需要額外的磁盤空間?
  • 也許MongoDB的支持更好的全文功能在未來(它正在迅速演變畢竟)
+0

全文搜索支持計劃在未來。但是現在你必須和Solr和朋友一起去。使用內置的「全文」功能並不適合真實世界的使用。 – 2011-03-15 12:09:00

+0

我已經開始整合[elasticsearch](http://elasticsearch.org/)全文搜索部分。並且還發現兩者之間有很大的特徵重疊。 :) Mongo成熟了,但我會堅持下去,但我想可以自己使用ES。看起來很有希望。 – 2011-05-09 07:52:11

1

全文搜索支持計劃在未來THW。然而,現在你必須與Solr &朋友一起去。使用內置的「全文」功能並不適合真實世界的使用。