gpt4 book ai didi

MySQL 表 MATCH AGAINST

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

enter image description here

大家好,

我创建了这个简单的表,在名为 XAMMP 上的出版物的数据库中称为 classics。我正在尝试对我认为我理解的作者姓名进行匹配搜索。

此外,我已确保该表已按要求进行了全文索引,作者和标题列均已编制索引。该表也是 MyISAM 类型。

我尝试过这个,但失败了。

从经典中选择作者 WHERE MATCH(author) AGAINST('Charles');

我知道 Charles 一定出现在作者栏中,正如您所见,但我没有返回任何行。

现在,如果我将其重写给任何其他作者,它就可以工作

从经典中选择作者 WHERE MATCH(author) AGAINST ('jane');

这是我从简身上得到的...

enter image description here

我不确定,但似乎之前我必须在查询中包含我索引的两个字段,而不仅仅是能够单独搜索作者。这是正确的吗?有人知道为什么我无法让查尔斯归还吗?

非常感谢!

最佳答案

它不会返回这些行,因为“charles”出现在 50% 的行中。这是 MySQL FULLTEXT 搜索的有据可查的限制。

如果您想绕过此限制,可以使用BOOLEAN MODE .

以下是 manual 的相关摘录:

匹配表中一半行的单词不太可能找到相关文档。事实上,它很可能会发现大量不相关的文档。我们都知道,当我们尝试使用搜索引擎在互联网上查找某些内容时,这种情况经常发生。正是基于这种推理,包含该单词的行被分配给它们出现的特定数据集的低语义值。给定单词在一个数据集中可能达到 50% 阈值,但在另一个数据集中则不会。

当您第一次尝试全文搜索以了解其工作原理时,50% 阈值具有重要意义:如果您创建一个表并仅在其中插入一两行文本,则每个单词文本中至少出现在 50% 的行中。因此,任何搜索都不会返回任何结果。确保插入至少三行,最好是更多。需要绕过50%限制的用户可以使用 bool 搜索模式;请参阅第 12.9.2 节“ bool 全文搜索”。

关于MySQL 表 MATCH AGAINST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10586603/

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