2010-01-24 81 views
1

我有一个查询,它在空间上标记了一个短语,并且需要查找该短语的最佳匹配。它需要首先返回匹配。我试图在使用where子句的单个查询中执行此操作。这可能吗?我想这些方针的东西:MySQL根据Where子句匹配的顺序排列结果

从myTable的

选择name其中name =“我的那句”或名称,比如“我的%短语%”或(名称,比如“我的%%”我的一句话:为

和名称(如“%phrase%”)或(名称如“%my%”或名称如“%phrase%”)限制5;

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

回答

1

使用全文搜索替代此选项。它速度更快,更灵活,并可让您评分结果。 Google for more

SELECT ..., MATCH(col_name) AGAINST ('my pharse') AS score FROM tbl_name WHERE MATCH(col_name) AGAINST('my pharse') ORDER BY score DESC; 
+0

美丽。这正是我所需要的,我没有意识到这是MySQL中的全文搜索。愚蠢的我不挖深,谢谢! – 2010-01-24 15:36:10