[英]MySQL Fulltext search result relevance
我有以下“银行”表
ID | name
1 | JPMorgan Chase bank
2 | Bank of south
3 | Citigroup bank
4 | Wells Fargo bank
5 | Bank of New York
因此,当搜索 'bank of' 时,我希望搜索结果返回如下:
Bank of New York
Bank of south
Citigroup bank
JPMorgan Chase bank
Wells Fargo bank
但是在我下面的代码中,它返回:
JPMorgan Chase bank
Bank of America
Citigroup bank
Wells Fargo bank
Bank of New York
这是代码:
$search_term = 'bank of';
$sql2 = "SELECT *,
MATCH(name) AGAINST ('.$search_term.' IN BOOLEAN MODE)
AS relevance FROM banks
HAVING relevance > 0.8
ORDER BY relevance DESC";
谢谢!
...是的,但我的选择是什么?
你可以试试这样的
SELECT *,
MATCH(name) AGAINST ('bank of' IN BOOLEAN MODE) AS relevance,
name LIKE '%bank of%' AS full_match
FROM banks
HAVING relevance > 0.8
ORDER BY full_match DESC, relevance DESC, name
结果:
| ID | NAME | RELEVANCE | FULL_MATCH | |----|---------------------|-----------|------------| | 5 | Bank of New York | 1 | 1 | | 2 | Bank of south | 1 | 1 | | 3 | Citigroup bank | 1 | 0 | | 1 | JPMorgan Chase bank | 1 | 0 | | 4 | Wells Fargo bank | 1 | 0 |
这是SQLFiddle演示
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.