我正在用 PHP 和 MySQL 构建一个搜索系统,并且有人要求我做一些有趣的事情。所以,假设我有一个假设表results
(在我的系统中,顺便说一下,它是一个视图)......
id text
1 "foo"
2 "foo bar"
3 "foo man choo"
4 "bar choo"
...和一个非常容易理解的SELECT
查询:
SELECT r.id, r.text
FROM results AS r
WHERE r.text REGEXP 'foo|bar|choo'
AND r.text NOT REGEXP 'man'
有没有这样一种方法,即使它意味着交换它REGEXP
,LIKE
我可以在这个文本旁边返回一个整数列,它返回每行的匹配数text
,所以我可以通过相关性/匹配数来排序这个查询,所以结果表如下所示?:
id text matches
2 "foo bar" 2
4 "bar choo" 2
1 "foo" 1