2013-01-25 30 views
0

我正在構建一個項目,並要求提供基於部分文本匹配結果的自動完成Feed的超快速方式。用於超快速部分文本匹配的數據庫/語言選項

我將索引/搜索數據庫中的唯一一個字段,儘管數據庫行將有額外的數據我不會索引這些字段。我將約。 25k行。

要求:

  • 必須在場上的任何地方匹配
  • (Lorem存有悲坐AMET將開始鍵入「咯」,「文字」,「色」,「坐阿梅德」時,可以找到)
  • 需要在一個JSON飼料返回結果是非常快速的(雖然數據的原始源沒有太大的關係)
  • 高流量

可升級解決方案我已經審查了幾個選項.. 。

  • 使用MongoDB的像這樣的like query in mongoDB
  • ElasticSearch - 不知道是否有點大材小用了什麼,我需要做的,並沒有看到匹配的部分文本如上
  • SQL LIKE查詢的任何exaples,但想象一下這不會快得多?

編程語言沒有太多的問題,但Python或PHP將是首選。

+1

你檢查過solr嗎?http://lucene.apache.org/solr/,我不認爲LIKE是工作的工具mysql支持FULLTEXT索引 – dm03514

回答

1

正如其他人所提到的那樣,執行語言和句法分析(標記化,詞幹化,大小寫和重音歸一化等)的全文索引將爲您提供最佳結果。但是,如果沒有一定的設置和配置,這將不會出現。

查看Solr的Suggester組件:http://wiki.apache.org/solr/Suggester,並且有一個新的 - 我認爲它被稱爲AnalyzingSuggester或某些類似的,這隻適用於Lucene,我認爲,所以如果你想要一個內存中的解決方案,你可以使用(雖然只有Java)。

1

這聽起來像一個典型的全文搜索的東西。根據您的應用程序和數據所在的數據庫,正在進行的whoosh可能會執行您所需的操作(如Lucene for Java)。

你說得對,SQL LIKE查詢將比實際的全文索引執行可怕。 MongoDB也可能不太適合,儘管可以調整大致做你的建議。