繁体   English   中英

MySQL全文搜索结果相关性

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM