我想在PHP中做一个简单的部分地址搜索实用程序。有问题的表格只有一个“地址”列。我的目标是能够让用户在表单中输入部分地址,并让我的脚本检索该表中的25个最接近的匹配项。有什么办法可以根据百分比字符串匹配在MySQL中选择表行吗?
显而易见,在我看来,马虎的做法是选择表格中的每个地址,然后让PHP循环遍历每一个地址,计算与搜索项相关的百分比相似度,然后排序输出。这似乎是资源的极大浪费,当你考虑该表有行数以万计的和我在寻找最多25
我愿做这样的事情:
SELECT id, firstname, lastname, PERCENTMATCH(address, $searchterm) AS matchpercent
FROM accounts
WHERE matchpercent > 85
ORDER BY matchpercent
LIMIT 25
但是,在我的查询中,我一直无法找到任何方法。这是可能的还是我必须走马路?
见http://stackoverflow.com/questions/634995/implementation-of-levenshtein-distance-for-mysql-fuzzy-search – jmz 2010-10-14 19:02:55
我曾建议HTTP ://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_soundex但我不确定这适用于你。所以我会留下这个作为评论。 – Alex 2010-10-14 19:05:35
http://stackoverflow.com/questions/16413/parse-usable-street-address-city-state-zip-from-a-string你可以解析出地址,然后从那里工作 – 2010-10-14 19:30:29