gpt4 book ai didi

mysql - 术语 "Stopword"在 MySQL 中是什么意思?

转载 作者:行者123 更新时间:2023-11-29 05:49:01 24 4
gpt4 key购买 nike

我目前正在研究 MySQL 命令,但在对 FULLTEXT 索引使用“MATCH...AGAINST”命令时遇到了困难。当它与“停用词”(在我的例子中是“和”)相对时,它返回一个“空集”。

这就是我所做的。我正在处理的数据库包含书籍及其作者的列表。我正在尝试选择标题中包含“和”的条目。这是我的“经典”表中的列表。

+--------------------+------------------------------+
| author | title |
+--------------------+------------------------------+
| Mark Twain | The Adventures of Tom Sawyer |
| Jane Austen | Pride and Prejudice |
| Charles Darwin | The Origin of Species |
| Charles Dickens | The Old Curiosity Shop |
| William Shakespear | Romeo and Juliet |
+--------------------+------------------------------+

这是我写的代码

SELECT author, title FROM classics
WHERE MATCH(author, title) AGAINST('and');

Empty set (0.00 sec)

我期望的结果是“傲慢与偏见”和“罗密欧与朱丽叶”而不是“空集(0.00 秒)”。我现在意识到“and”是一个停用词。

我的问题是“停用词”是什么意思,我怎么知道哪个词是停用词?如果我真的想选择标题中包含“and”的查询,我该怎么办?

最佳答案

My question is What does the "stopword" mean ...

停用词是在全文搜索中作为关键字给出时将被忽略的词。

有关更多信息,请阅读 stopwords 上的维基百科页面.

MySQL 以与正常定义一致的方式使用该术语。

... and how do I know which word is a stopword?

对于 InnoDB 表,您可以查询 INFORMATION_SCHEMA.INNODB_FT_DEFAULT_STOPWORD 表。

对于 MyISAM 搜索索引,停用词是从文件中加载的。可以使用 Java 文件 I/O 在运行时读取文件,但显然无法通过数据库查询访问它。

And what should I do if I really want to select the query which contains "and" in its title?

MySQL 文档解释了如何做;见Section 12.9.4 Full-Text Stopwords . (这里复制的太详细了。)

我的解读是,您需要更改配置并重新启动数据库服务器才能更改停用词。对于 InnoDB 表,您还需要重新生成表的全文索引。

这意味着您不能更改每个查询的停用词……如果这是您的目标。但是您可以使用 LIKE 显式查询停用词;例如

SELECT author, title FROM classics
WHERE title LIKE '% and %';

该查询可能需要表扫描,因此您希望尽可能避免它。

关于mysql - 术语 "Stopword"在 MySQL 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56412773/

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