gpt4 book ai didi

sql - MySQL MATCH...AGAINST 有时会找到答案,有时不会

转载 作者:行者123 更新时间:2023-11-29 01:15:04 25 4
gpt4 key购买 nike

当我查询我的数据库时,以下两个查询返回相同的(预期的)结果:

SELECT * FROM articles 
WHERE content LIKE '%Euskaldunak%'

SELECT * FROM articles
WHERE MATCH (content) AGAINST ('+"Euskaldunak"' IN BOOLEAN MODE)

它正在搜索的内容字段中的文本如下所示:“...这些 Euskaldunak,或新来者...”

但是,对同一个表的以下查询返回预期的单一结果:

SELECT * FROM articles 
WHERE content LIKE '%PCC%'

下面的查询返回一个空结果:

SELECT * FROM articles 
WHERE MATCH (content) AGAINST ('+"PCC"' IN BOOLEAN MODE)

内容字段中匹配此结果的文本如下所示:“...波特兰社区学院 (PCC) 是最大的...”

我不明白为什么搜索“Euskaldunak”可以使用 MATCH...AGAINST 语法,但搜索“PCC”却不行。有人看到我没看到的东西吗?

(另外:“PCC”不是该字段中的常用短语 - 没有其他行包含该词,因此自然语言搜索不应排除它。)

最佳答案

您的全文最小字长可能设置得太高。我认为默认值为 4,这可以解释您所看到的。如果您希望索引所有单词而不考虑长度,请将其设置为 1。

运行这个查询:

show variables like 'ft_min_word_len';

如果值大于 3 并且您希望命中短于该值的单词,请编辑您的/etc/my.cnf 并使用适合您的应用程序的值在 [mysqld] 部分添加或更新此行:

ft_min_word_len = 1

然后重新启动 MySQL 并重建您的全文索引,您应该一切就绪。

关于sql - MySQL MATCH...AGAINST 有时会找到答案,有时不会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4071408/

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