gpt4 book ai didi

mysql - 按找到的最多的 MY_SQL 全文排序

转载 作者:搜寻专家 更新时间:2023-10-30 19:53:53 27 4
gpt4 key购买 nike

我正在开发一个网络应用程序,需要一些查询方面的帮助。我正在使用全文,这是它的样子:

SELECT id, name, city, state, country, date
FROM events_search
WHERE MATCH(name, city, state, country)
AGAINST ('$str')

如您所见,我正在使用一个包含名称、城市、州和国家/地区的索引,并将其与用户输入的字符串相匹配。该字符串可以包含我刚才提到的字段的任意组合。所以我需要查询数据库,找到最相关的结果,然后将它们显示给用户。到目前为止,它运行良好但并不完美。

例如:如果用户输入佛罗里达州迈阿密,则前 5 个结果在迈阿密和佛罗里达州的其他城市。接下来的 5 个在亚利桑那州迈阿密(我不想展示这个),之后我会得到更多在佛罗里达和迈阿密(佛罗里达州)的结果。所以我想做的是确定已找到更多次的字段并将该字段显示在顶部的结果。在这种情况下,它将是佛罗里达州,因为 70% 的结果在州字段中都有佛罗里达州。

最佳答案

SELECT 子句中包含您的全文搜索,您将得到一个分数,即 MySQL 认为它的相关程度。

SELECT 
id,
name,
city,
state,
country,
date,
MATCH(name, city, state, country) AGAINST ('$str') AS relevancy
FROM
events_search
WHERE
MATCH(name, city, state, country) AGAINST ('$str')
ORDER BY relevancy DESC

这不会使查询变慢,优化器会检查,它是相同搜索条件的两倍。

使用 ORDER BY 子句,您的“miami Arizona”应该晚于“miami(florida)”出现。

关于mysql - 按找到的最多的 MY_SQL 全文排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9968307/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com