使用mysql的匹配来模糊匹配地址(如果可能的话使用权重以获得更好的结果排名)

发布于 2024-11-05 07:21:06 字数 367 浏览 1 评论 0原文

我有一个带有 FULLTEXT 索引的 myISAM 表,试图

SELECT 
    lk.id,
    lk.address
FROM 
    lk 
WHERE MATCH 
    lk.address 
AGAINST('235 regent street, london w1b 2et');

得到结果,但只有那些在里面有“london”这个词的人,或者那些在里面有“street”这个词的人。我知道 3 ft_min_word_len 个字符的单词没有被索引,因此“235”、“w1b”、“2et”被忽略,但是“regent”呢? 执行此操作的标准方法是什么?模糊匹配地址。 谢谢

I have a myISAM table with FULLTEXT index , trying to do

SELECT 
    lk.id,
    lk.address
FROM 
    lk 
WHERE MATCH 
    lk.address 
AGAINST('235 regent street, london w1b 2et');

I get results but only the ones who got the word "london" inside, or ones who got the word "street" inside. I know that 3 ft_min_word_len character words aren't indexed so "235","w1b","2et" are ignored, but what about "regent" ?
What is the STANDARD way of doing this? fuzzy matching an address.
thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

衣神在巴黎 2024-11-12 07:21:06

答案是使用 MATCH AGAINST('...' IN BOOLEAN MODE) ,并在每个单词前面添加 +

或者使用其他字符,如下所示:
http://dev.mysql.com/doc/refman/5.1 /en/fulltext-boolean.html

它需要根据您搜索的文本以及获取方式进行微调。

The answer is to use MATCH AGAINST('...' IN BOOLEAN MODE) , and to add + in front of every word.

Or use other characters like explained in:
http://dev.mysql.com/doc/refman/5.1/en/fulltext-boolean.html

It needs fine tuning depending on your searched text, and how you got it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文