2013-09-01 82 views
1

我想爲我的網站建立一個搜索引擎,以便我可以快速找到相關內容。我做了不少谷歌搜索,發現了ElasticSearch和Solr(都位於Lucene之上)和whoosh(基於python)。爲我的網站建設/設計搜索引擎的建議方法

但是,所有這些搜索引擎只是在數據之上建立一個「倒排索引」嗎?還有哪些其他算法可以獲得更高質量的搜索?

我是通過使用Solr的頂部協同過濾這篇博客,它返回相關搜索查詢感興趣:

http://www.opensourceconnections.com/2013/08/25/semantic-search-with-solr-and-python-numpy/ 

有沒有我應該知道的其他常見的技術?是否還有其他庫位於ElasticSearch/Solr之上,我可以直接插入,並使用「開箱即用」?

任何鏈接或提示將不勝感激!

+0

你能解釋一下你的網站? – kamaci

回答

3

你還沒有提到你正在研究的是什麼技術。

如果您使用Ruby on Rails,我會推薦Tire,這是一個通過ElasticSearch提供DSL封裝的gem。從本質上講,它允許您在Elasticsearch中索引數據。

For Rails,Sunspot是人們用來與Solr進行交互的非常流行的寶石。

對於.NET - SolrNET是一個很棒的Solr客戶端。

您的問題的其他部分(圍繞實施一個好的搜索引擎)過於寬泛 - 我會推薦閱讀一本好書,如Lucene in Action,以瞭解Solr/Elasticsearch可以做什麼。

我確實有一些筆記,我寫了一段時間後,你可以閱讀我的一些搜索經驗here

編輯:

由於您是蟒蛇的工作,我會建議,雖然它是特定於Django的。它對我們的需求非常靈活。但是,如果您不使用django,我可以將solrpy視爲Solr客戶端。 Haystack與Solr和Elasticsearch合作。

+0

感謝您的迴應和建議!我更喜歡用python工作......我會看看「Lucene in Action」。鏈接到您的筆記已損壞... – vgoklani

+0

編輯與一些python客戶端的詳細信息。 Notes鏈接適用於我,反正試試這個 - www.hacknlearn.in/tag/search –

+0

注意:由於elasticsearch-ruby gem https://github.com/elasticsearch/elasticsearch-ruby,輪胎開發已停止 –

0

我建議你學習Solr API,因爲它是從4年開發的5年,所以你可以在Solr找到很多像插件一樣的搜索API,但是在彈性搜索中它很容易配置,但是它非常年輕的發動機需要更多的開發。

0

Pyes是Elasticsearch的一個記錄良好的Python客戶端。

另外,這Youtube video提供了一個很好的使用Elasticsearch與Python的概述。

0

我們在Solr和Elastic上開發了幾種搜索引擎。 Solr曾經是最好的,因爲它提供了管理和調試索引所需的大部分工具。現在,Elastic可以本地或通過插件提供與Solr相同的功能。另外,在高性能/高可用性方案(易於分片或羣集)中進行配置更容易。

您的技術堆棧無關緊要。 Solr和Elastic都有幾乎所有語言的客戶端,再加上您可以通過普通HTTP訪問:

也就是說,每個搜索引擎都適用於問題域。 Tunning Elastic或Solr來檢索相關的結果是一些帶有一些試驗和錯誤的藝術。 您必須爲您要搜索的每個字段定義分析器,並根據您的搜索模式以及您期望的結果類型來定義分析器。

最終,創建具有跨文檔類型的不同屬性進行搜索單個輸入搜索引擎,可能需要使用DisMax的查詢,在那裏你可以提高結果取決於搜索詞條中以特定的文檔字段的匹配。

總結:去Elastic,並獲得一些插件或前端。兩個建議:

  • 打破砂鍋:測試你的分析
  • 彈性體頭:用於管理目的