如何创建包含匹配记录的良好搜索

时间:2011-10-13 17:50:16

标签: mysql full-text-search

我不知道如何在标题中解释这一点,当我搜索united kingdom这样的典型查询并且记录包含{{1}的记录时,我遇到了一个问题。 1}}我不需要将它包含在查询结果中,即使搜索united states我也会从new york(英格兰)返回一些记录。

另一方面,当搜索york时,查询不返回任何记录,但在数据库中它存在。

我需要解决此查询的问题,它应该搜索与输入的查询匹配的行并删除与选项匹配的行 - 当我说选项时,我的意思是maidstone

搜索rec.column_name = etc...时:

united kingdom

搜索WHERE ( MATCH (rec.street_name, rec.city, rec.state, rec.country) AGAINST ('united kingdom' IN BOOLEAN MODE) OR ( rec.street_name = 'united kingdom' OR rec.city = 'united kingdom' OR rec.state = 'united kingdom' OR rec.country = 'united kingdom' ) ) AND ( rec.visible_listing = 1 AND rec.marked_delete = 0 AND rec.is_archive = 0 ) 时:

maidstone

这是表中的总记录:

WHERE  ( MATCH (rec.street_name, rec.city, rec.state, rec.country) AGAINST ('maidstone' IN BOOLEAN MODE) 
         OR ( rec.street_name = 'maidstone' 
              OR rec.city = 'maidstone' 
              OR rec.state = 'maidstone'
              OR rec.country = 'maidstone'
            )
       ) AND ( rec.visible_listing = 1 AND rec.marked_delete = 0 AND rec.is_archive = 0 )

如何创建一个返回非错误数据的好搜索查询?

1 个答案:

答案 0 :(得分:2)

将搜索字符串放在双引号内:'"united kingdom"'以获得完全匹配。

如果您要搜索这两个字,但不一定要彼此相邻,可以使用+运算符:'+united +kingdom'

请注意,如果对搜索的列使用二进制排序规则,搜索将区分大小写。