2010-09-13 45 views
1

我正在考慮用戶輸入的文本驅動搜索。 通常您在地址數據庫中搜索,您可以在其中找到客戶等。有沒有一種算法來找出搜索字符串中的哪些單詞屬於一起?

有沒有人有任何想法如何找出哪些打字的詞是名稱,這是街道名稱,這是公司名稱? 其次,如果這個名字是一個像「Lee Harvey」這樣的雙重名字,我怎麼能夠發現Lee和Harvey這兩個詞屬於一起? 與「frank the baker inc。」等公司名稱相同的問題...

有沒有算法或最佳實踐策略? 感謝您的鏈接,教程,腳本和所有其他幫助;-)

+0

一種可能的方法是查找所有可能的組合 - 只有正確的組合纔會產生任何結果。但這可能很昂貴。 – 2010-09-13 10:20:12

+0

@radomir這可能不適用於用戶可能正在等待查詢以獲得結果的活動場景。確實非常昂貴... – 2010-09-13 10:42:48

回答

0

不在乎,只是執行全文搜索。然後,您應該檢查包含搜索字詞的結果項目。此外,您可以在單獨的列表中顯示項目(名稱中找到的術語,在地址中找到的術語)。唯一的困難是如果John Smith住在John Smiht街道,你必須決定,結果項目屬於哪個列表/列表。

1

你基本上要什麼是搜索引擎:)這裏有你需要遵循的基本步驟 - 你需要你想搜索的內容創建一個「倒排索引」

  1. 該索引是'name'=>'value'對。你可以有這樣一對任何你想要的方式(根據您的數據&需要調整

例如,對於你的雙名的問題,你可以所有人的名字拆分成單個的詞&指數它像這樣 - 。

'lee'=>'lee harvey' 
'harvey'=>'lee harvey' 
... 

當任何人搜索這種方式「李」,他們得到「李·哈維」。對於這個所謂的「正克」索引其他更好的方法檢查出來...

你可能建立姓名,地址,電子郵件等索引&當用戶鍵入查詢時,使用上面建議的方法針對所有索引檢查它。獲得結果後,合併它們。也許你可以引入排名的概念,以便您可以將結果排序&顯示頂部最新或最相關的結果。爲此,您需要找出一種方法來評分您的條款...

相關問題