首页 > 解决方案 > Mysql MATCH,首先按“找到完整世界”排序

问题描述

我有这个数据:

id  |lastname       | firstname
--------------------|----------
1   | sevenier      | anna
2   | Sévenier      | Julie
3   | SEVES         | Laurie
4   | seve          | gwen
5   | SÈVE          | clémentine
6   | Sève          | Antoine
7   | Posève        | Thomas

我想要的是 :

用户将搜索seve,结果应返回(注意顺序):

id  |lastname       | firstname
--------------------|----------
4   | seve          | gwen
6   | Sève          | Antoine
5   | SÈVE          | clémentine
3   | SEVES         | Laurie
1   | sevenier      | anna
2   | Sévenier      | Julie
7   | Posève        | Thomas

我想先得到完整的关键字,然后是 wilcard 的另一个结果start with,然后是 wildcard full

我尝试使用 FULLTEXT 和 MATCH :

SELECT 
   MATCH(lastname) AGAINST ('*seve*' IN BOOLEAN MODE) AS relevance, 
   customer.* 
FROM `customer` 
   WHERE MATCH(lastname) AGAINST ('*seve*' IN BOOLEAN MODE)
ORDER BY relevance DESC

我认为relevancy应该更“相关”,但它是一样的,它是否匹配完整的关键字或通配符结果并不重要。

可以用 MySQL 完成吗?我需要一些 PHP 治疗吗?我现在正在探索这种方式,但我想确保不会错过任何东西。

标签: mysql

解决方案


推荐阅读