2013-05-30 36 views
0

我需要實現Linked in或Facebook提供的類似搜索功能。如果您在fb中使用新的Graph搜索,則當您在搜索文本上鍵入L時,它會建議一些用戶名稱中有L,L的地方,L的頁面等等。那麼如何實現這種搜索。如何在鏈接中或在fb中進行搜索?

我相信有可能是存儲分割整個數據的拷貝的表。

喜歡的東西

TypeID - Text   - ID for the corresponding table 
User - Laurence  - 1 
User - Elis Lowman - 2 
Pages - Lexus  - 4 
Pages - Lux   - 1 
Place - Las Vegas - 6 
Place - Lebonan  - 8 

,對嗎?或任何其他方式,我們可以能夠實現這一目標?\

編輯 我查了相同的鏈接中。也有類似的搜索。請檢查附加的圖像。 enter image description here

預先感謝任何幫助。

+0

你問*它是如何做?*或*它是如何在FB實現?*在任何情況下,我非常懷疑任何人會使用SQL它。 – amit

+0

@amit我需要實現或實現類似的功能。這將是偉大的一些人可以提供一些信息 – kbvishnu

回答

1

我不知道它是如何在Facebook上實現的,但我會給出一個籠統的回答。

你正在尋找的東西,是在信息檢索字段作爲查詢自動完成refered首先說明。

這裏有一些基本的指導線可以怎麼做:

  1. Trie數據結構是在尋找前綴相當有效。通過前綴的路線,然後從那裏做DFS可以給你帶有相同前綴的字典中的所有單詞。

  2. 然而,它會給你一個巨大的 - 方面的主要是無關緊要的列表,以及服務器想給用戶最好的建議,而不是所有的建議。通常的做法是使用查詢日誌。更頻繁的查詢更可能是用戶正在查找的內容。因此,搜索引擎擁有查詢和前綴緩存,並使用它來爲客戶提供他最可能想要的頁面。

  3. 尋求最佳的自動完成還遠遠沒有結束,在過去的幾年裏,已經做了很多工作。例如,我發現Naama Kraus和Ziv Bar Yosef的作品:Context Sensitive Query Auto Completion是一個非常有趣的作品。這個想法並不是僅僅使用查詢日誌的一般知識 - 也使用用戶的數據,在這種情況下 - 您正在使用他的最後一個查詢 - 因爲很可能新查詢與他的最後一個查詢有某種關係。

+0

感謝您的建議。在我們的例子中,用戶可能會搜索一些信息,這些信息可能是唯一密鑰或名稱。如果是唯一密鑰,我們需要顯示完全匹配。但是在用戶使用文本值搜索的情況下,我們需要顯示不同的選項。 – kbvishnu

0

數據庫和開源軟件包,如Lucene和獅身人面像搜索允許通配符關鍵字的查詢做前綴搜索。他們的速度和結果質量各不相同還有專門爲此類搜索查詢設計的商業軟件包。

相關問題