2014-10-04 53 views
-3

搜索功能(不知道這是這個問題的正確論壇)設計用於高檔次

我如何在各大網站搜索,YouTube的說/ Quora的/ stackexcahnge,工作很好奇? 而我不是在尋找像'他們使用Lucene搜索引擎'這樣的答案。我想確切瞭解索引在那裏的工作原理。

  • 是否有不同於自動完成功能的文本搜索索引?
  • 它是否在像地圖縮小的背景中完成。
  • 地圖如何減少幫助提供結果? (我知道它在每個文檔中都包含單詞,但是在搜索關鍵字後發生了什麼?)
  • 我也聽說google停止使用map reduce,現在正在使用雲數據流here - 這是如何工作的?

幫助請:-)

回答

1

我投票決定關閉,因爲我覺得你的問題是過於寬泛。每一顆子彈都可以構成SO問題的基礎。這表明,我會採取一個答案如何SolrCloud試圖解決您所問的每個問題:

是否有一個不同於自動完成功能的文本搜索索引?

簡短回答是「是」。 Solr有implementing an autocomplete feature的幾個選項,他們都依靠建立單獨的索引或提供單獨的字典。您還可以以更復雜的方式推出自己的博客文章"Super flexible AutoComplete with Solr" demonstrates

它是否在像地圖縮小的背景下完成?

一般來說不會。 SolrCloud基於shards with leaders and replicas的想法。碎片是整體索引的一個子集。一個碎片由一個領導者和可能的一個或多個複製品組成。

針對所有分片領導者執行查詢。通過分配一個特定的分片作爲每個分片響應的聚合器,但不同於map reduce,其中個別節點響應具有reduce節點所需的所有數據,例如the aggregating Solr shard may make multiple requests back to the other shards to figure out sort order

地圖的精確度如何減少幫助提供結果? (我知道它在每個文檔中都包含單詞,但在搜索關鍵字後會發生什麼?)

請參閱我對上一個問題的回答。簡而言之,查詢是針對每個分片執行的,由其中一個分片聚合,然後返回給請求者。 Solr所做的 - Lucene真的 - 這是人們最常關聯的有用魔術部分,Term Frequency Inverse Document Frequency索引usually with stemming用於文本搜索。雖然這並不完全是這種情況下發生的,並且您可以通過配置改變實際完成的內容,但它提供了一個相當好的構想。

以與database indexing類似的方式進行其他搜索,日期和數字或簡單文本值。這是一個簡化的,如果你想了解更全面的閱讀NumericRangeQuery的JavaDoc一個深入的解釋。

我也聽說谷歌停止使用地圖縮減,現在在這裏使用雲數據流 - 這是如何工作的?

如果我知道答案,我可能會爲Google工作,而不是回答StackOverflow問題:)。說真的,無論他們做什麼都是新的博士水平的工作,據我所知,他們甚至沒有發佈研究論文,這是他們用map reduce that led to Yahoo building Hadoop做的。