1

我有一个查询,它在空格上标记一个短语,并且需要寻找该短语的最佳匹配。它需要首先返回该匹配项。我正在尝试使用 where 子句在单个查询中执行此操作。这可能吗?我正在尝试这些方面的东西:

对于:我的短语

从 myTable 中选择名称,其中 name="我的短语" 或名称如 "%my phrase%" 或 (名称如 "%my%" 和名称如 "%phrase%") 或 (名称如 "%my%" 或名称如"%phrase%") 限制 5;

基本上我希望按照 where 子句匹配的顺序排列前五名。我知道默认情况下 MySQL 以优化的方式评估 where 子句。有没有办法强制它按顺序评估它们?如果是这样,我怎样才能让它按照 where 子句匹配的顺序返回结果?

4

1 回答 1

1

使用全文搜索而不是这个。它更快、更灵活,让您获得结果。谷歌了解更多

SELECT ..., MATCH(col_name) AGAINST ('my pharse') AS score FROM tbl_name WHERE MATCH(col_name) AGAINST('my pharse') ORDER BY score DESC;
于 2010-01-24T15:31:32.917 回答