2010-10-14 57 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

相关问题