2011-04-06 46 views
3

我的一位朋友在他最近的採訪中遇到了這個問題。我在這裏發佈2個問題以獲得更好的解決方案& fyi。如果您輸入「light」,則下拉式選項中的建議大多以「light」開頭,並且當您鍵入每個字符並隨每個字符而改變時,但如果輸入「tigress」或「possi」,建議包括「離題」或其他幾個人(同樣的聲音?)。這個建議功能如何實現?wordweb中使用的索引結構(英語詞典)

- 什麼是最好的方式來存儲和檢索同義詞,反義詞,類型,typeof等有看看這些標籤。

我不認爲這可以通過簡單的字典種算法來解決(糾正我,如果我錯了)。 儘管他沒有被要求寫任何示例代碼,但對我來說這聽起來像是一個棘手的問題。

回答

4

第一個問題:

我會使用基於常見的前綴屬性特里數據結構,並建立它產生二極管燈 - >光。我的猜測是,當我們不得不以另一種方式繞過母老虎 - >離題時,使用通用後綴屬性來構建Trie。也就是說,不是從左到右地逐個字符地構建字典,而是從右到左地構建它。因此, 母老虎將被解析爲:s-> s-> e-> r-> g-> i-> - > g-> i-> d

我認爲這會在開始的時候提供建議。但是,我想了解我們在開始和結束時如何支持suggesting next character

2

重新提出您的第一個問題。

edit distance提供了衡量兩個單詞「不同」的度量。一個簡單的實現可以通過比較詞條與詞典的主要列表(詞典),然後以最低的分數提供N個詞的建議作爲建議。

0

我可能會使用有向無環詞圖來存儲字(容易地使基於前綴建議),但不是一個簡單的NULL爲字標記的端我不得不其中包括一個終端節點這個詞的soundex值。

同義詞,反義詞和soundex匹配將在一組獨特的數據結構中。關聯數組就足夠了,雖然只是按鍵的排序列表/索引到一個緊湊的數據陣列可能會被罰款對小wordsets。