百度的搜尋拼音聯想功能是大致上的原理是怎樣的呢 謝謝!
在百度中 輸入guangzhou下方就會提示廣州、廣州新聞。我在想百度是不是將一些熱門關鍵字,然後用一個欄位記住這些關鍵字的拼音;搜尋的時候就直接查這個表。如果是拼音,就模糊比對這個拼音標示列。完成匹配後將結果返回。這些只是我的想象,好像當中還有關鍵字權重機制。Google找不到相關資料;是不是有其它方式實現我沒想到的呢。求助大俠 謝謝!
------解決方案--------------------
前陣子和公司搜尋部的人打了很多交到,瞭解了搜尋引擎的工作大致原理。
搜尋引擎內部有很多詞表:
停詞表,建義詞表,同義字表、漢字-拼音的詞表、suggest。
當你在搜尋引擎上輸入一個中文短句,搜尋引擎首先會進行分詞,然後將這些詞,分別去上面提到的幾個詞表中尋找有沒有相關聯的資訊。如你所說的,就會去尋找拼音-漢字的詞表。遇到guangzhou = 廣州,就會自動翻譯過來。然後優先拿廣州去進行搜尋。
當你輸入一個錯誤詞後,可能會被搜尋引擎的suggest糾正過來並提示你:您要找的是不是xxx?
其實上面只是搜尋引擎處理搜尋請求的其中一個分支,一次搜尋會並行進行很多請求。
比如你在搜尋引擎輸入個短句。
搜尋引擎首先會確定要搜尋的內容:
1 整句
2 標準分詞(可以理解為按中文文法分詞)
3 自然分詞(按單字、空格、標點進行分詞)
...
然後分表拿每個分支,上面提到的那些輔助的詞表,最佳化將要搜尋的內容。
幾個分支同時請求,拿到多個結果集。
接下來就是處理排序的問題了,一般來說,整句搜尋拿到的結果相關度最高,所以權重也最高,理應排在第一位。但現實中的搜尋引擎可能還要考慮到推廣位,以及你要搜尋的內容有更加官方的結果(比如你搜nginx,nginx的官方網站應該排在第一位)。或者是百度的百度推廣,它可能會放在前面。
大致就是這樣,實際上排序的邏輯是非常複雜的。它會根據好幾個維度來確定排序結果,他們稱這些叫“曲線”。當他調整每個維度參數後,對排序結果都會產生影響。