2010-10-14 55 views
3

我想在PHP中做一個簡單的部分地址搜索實用程序。有問題的表格只有一個「地址」列。我的目標是能夠讓用戶在表單中輸入部分地址,並讓我的腳本檢索該表中的25個最接近的匹配項。有什麼辦法可以根據百分比字符串匹配在MySQL中選擇錶行嗎?

顯而易見,在我看來,馬虎的做法是選擇表格中的每個地址,然後讓PHP循環遍歷每一個地址,計算與搜索項相關的百分比相似度,然後排序輸出。這似乎是資源的極大浪費,當你考慮該表有行數以萬計的和我在尋找最多25

我願做這樣的事情:

SELECT id, firstname, lastname, PERCENTMATCH(address, $searchterm) AS matchpercent 
FROM accounts 
WHERE matchpercent > 85 
ORDER BY matchpercent 
LIMIT 25 

但是,在我的查詢中,我一直無法找到任何方法。這是可能的還是我必須走馬路?

+2

見http://stackoverflow.com/questions/634995/implementation-of-levenshtein-distance-for-mysql-fuzzy-search – jmz 2010-10-14 19:02:55

+0

我曾建議HTTP ://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_soundex但我不確定這適用於你。所以我會留下這個作爲評論。 – Alex 2010-10-14 19:05:35

+0

http://stackoverflow.com/questions/16413/parse-usable-street-address-city-state-zip-from-a-string你可以解析出地址,然後從那裏工作 – 2010-10-14 19:30:29

回答

3

全文搜索可以查詢成績的相關性:http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html

+0

嗯,我看到的問題是,它需要修改現有的表。我試圖搜索的表格是由我們的製作軟件創建的,而不是我自己寫的軟件。即使它們看起來可能不重要,我仍然對它進行任何結構性修改都非常謹慎。 – DWilliams 2010-10-14 20:47:58

相關問題