gpt4 book ai didi

php - MySQL 全文 bool 模式搜索返回太多结果

转载 作者:行者123 更新时间:2023-11-29 05:18:45 26 4
gpt4 key购买 nike

我的全文搜索查询有问题,我几乎遍历了所有我能找到的论坛和话题,但我仍然遇到这个问题。

我正在使用 MySQL 全文 bool 模式搜索来返回基于两列(艺术家姓名和轨道名称)的匹配行。用户可以在搜索栏中输入他们想要的任何短语,并且结果应该只是包含 EITHER 列中搜索查询的所有部分的行。

这是我到目前为止的查询,它适用于大多数查询,但对于某些查询,它返回的结果过于松散,我不确定为什么。

SELECT * FROM tracks WHERE MATCH(artist, title) AGAINST('+paul +van +dyk ' IN BOOLEAN MODE)

然而,此查询返回包含 Paul 的行,但不包含“Van”或“Dyk”。同样,我希望查询仅返回包含艺术家或轨道名称列中所有关键字的行。

提前致谢

最佳答案

要增强 bool 模式下结果的排序,您可以使用以下方法:

SELECT column_names, MATCH (text) AGAINST ('word1 word2 word3')
AS col1 FROM table1
WHERE MATCH (text) AGAINST ('+word1 +word2 +word3' in boolean mode)
order by col1 desc;

使用first MATCH() 我们在非 bool 搜索模式下得到分数(更有特色)第二个 MATCH() 确保我们真正只返回我们想要的结果(包含所有 3 个单词)

因此您的查询将变为:

SELECT *, MATCH (artist, title) AGAINST ('paul van dyk')
AS score FROM tracks
WHERE MATCH (artist, title)
AGAINST ('+paul +van +dyk' in boolean mode)
order by score desc;

希望;你现在会得到更好的结果。

它是否有效;请告诉我。

关于php - MySQL 全文 bool 模式搜索返回太多结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28956323/

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