我正在考慮用戶輸入的文本驅動搜索。 通常您在地址數據庫中搜索,您可以在其中找到客戶等。有沒有一種算法來找出搜索字符串中的哪些單詞屬於一起?
有沒有人有任何想法如何找出哪些打字的詞是名稱,這是街道名稱,這是公司名稱? 其次,如果這個名字是一個像「Lee Harvey」這樣的雙重名字,我怎麼能夠發現Lee和Harvey這兩個詞屬於一起? 與「frank the baker inc。」等公司名稱相同的問題...
有沒有算法或最佳實踐策略? 感謝您的鏈接,教程,腳本和所有其他幫助;-)
我正在考慮用戶輸入的文本驅動搜索。 通常您在地址數據庫中搜索,您可以在其中找到客戶等。有沒有一種算法來找出搜索字符串中的哪些單詞屬於一起?
有沒有人有任何想法如何找出哪些打字的詞是名稱,這是街道名稱,這是公司名稱? 其次,如果這個名字是一個像「Lee Harvey」這樣的雙重名字,我怎麼能夠發現Lee和Harvey這兩個詞屬於一起? 與「frank the baker inc。」等公司名稱相同的問題...
有沒有算法或最佳實踐策略? 感謝您的鏈接,教程,腳本和所有其他幫助;-)
不在乎,只是執行全文搜索。然後,您應該檢查包含搜索字詞的結果項目。此外,您可以在單獨的列表中顯示項目(名稱中找到的術語,在地址中找到的術語)。唯一的困難是如果John Smith住在John Smiht街道,你必須決定,結果項目屬於哪個列表/列表。
你基本上要什麼是搜索引擎:)這裏有你需要遵循的基本步驟 - 你需要你想搜索的內容創建一個「倒排索引」
例如,對於你的雙名的問題,你可以所有人的名字拆分成單個的詞&指數它像這樣 - 。
'lee'=>'lee harvey'
'harvey'=>'lee harvey'
...
當任何人搜索這種方式「李」,他們得到「李·哈維」。對於這個所謂的「正克」索引其他更好的方法檢查出來...
你可能建立姓名,地址,電子郵件等索引&當用戶鍵入查詢時,使用上面建議的方法針對所有索引檢查它。獲得結果後,合併它們。也許你可以引入排名的概念,以便您可以將結果排序&顯示頂部最新或最相關的結果。爲此,您需要找出一種方法來評分您的條款...
一種可能的方法是查找所有可能的組合 - 只有正確的組合纔會產生任何結果。但這可能很昂貴。 – 2010-09-13 10:20:12
@radomir這可能不適用於用戶可能正在等待查詢以獲得結果的活動場景。確實非常昂貴... – 2010-09-13 10:42:48