gpt4 book ai didi

mysql - 为什么 MATCH AGAINST 返回的结果与 LIKE 不同?

转载 作者:行者123 更新时间:2023-11-29 03:03:48 27 4
gpt4 key购买 nike

我正在比较像这样的查询的结果

SELECT * FROM object_search
WHERE
keywords LIKE '%,woman,%'
AND keywords LIKE '%,man,%'

SELECT * FROM object_search
WHERE
MATCH (keywords) AGAINST ('+(",woman,") +(",man,")')

我本来期望得到完全相同的结果,但第一个查询吐出大约 300 个结果,第二个查询吐出接近 3000 个结果。

两者之间有什么区别?如何使用全文功能获得相同的结果?

最佳答案

+ 运算符用于搜索 IN BOOLEAN MODE .我认为它会在NATURAL LANGUAGE MODE(默认)中被忽略。

尝试:

SELECT * FROM object_search
WHERE MATCH (keywords)
AGAINST ('+woman +man' IN BOOLEAN MODE); -- could return rows containing both "man" and "woman" (ignoring ft_min_word_len, see below)

此外,全文索引将仅涵盖单词。标点符号(如 )将始终被忽略。您不能“全文搜索”非字母数字字符。

最后,默认情况下,短于 4 个字符的单词将被忽略。因此,默认情况下,“man”没有被索引。此限制可以通过 ft_min_word_len 更改。配置选项。

另外,请注意 stopwords (从未编入索引的常用词)。

关于mysql - 为什么 MATCH AGAINST 返回的结果与 LIKE 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19005867/

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