2009-12-16 62 views
0

首先,不,我不是問,請告訴我Google是如何構建在兩個句子中的。我所要求的是稍有不同。我有一個充滿用戶輸入的文本數據的數據庫。我們也爲他們提供了稍後搜索這些數據的功能。問題是,我們現在做一個簡單的全文搜索並以任何順序返回結果。我想根據體重,用戶輸入某種東西的頻率來計算結果。一個用戶可以鍵入在以下的例子:基於上述根據以前的用法排列搜索結果的算法

「foo」的 「博」 「鮑勃」 「鮑勃」 「鮑勃」 「博」 「foo2的」

數據,'b'上的搜索應該返回bo和bob,但bob應該首先列出。這是根據使用情況最相關的。

好奇,我應該研究什麼算法來以有效的方式構建這個算法?任何基於常見網絡算法(我知道這不僅僅是網絡特定的)的書籍會解釋這一點嗎?

+0

尋找此...謝謝..(Y) – Nakshatra 2015-06-22 11:04:46

回答

0

我不知道該怎麼你會在數據庫中的情況下做到這一點,但這裏是去了解的一種方式:

使用trie存儲每個唯一字和計數多久它被使用。當你的用戶開始輸入時,trie可以讓你有效地抓住所有帶有給定前綴的字符串,然後你可以使用「計數」作爲鍵來排序。

0

我們使用apache solr進行搜索。 在這個技術中,我認爲,這通常是通過增強來完成的。因此,索引您的數據,每天大概如此,然後根據用戶查詢提升單個文檔。