gpt4 book ai didi

MySQL (Windows10) 使用 MyISAM 表进行全文搜索不起作用

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

我有一个问题,我可以用两个非常简单的表重新创建它。这些表的定义如下:

create table Temp_Table_MyISAM(  
id INT UNSIGNED AUTO_INCREMENT,
code VARCHAR(10) NOT NULL,
name VARCHAR(256) NOT NULL,
PRIMARY KEY (id),
KEY (code),
FULLTEXT (name)
) ENGINE = MYISAM;


create table Temp_Table_InnoDB(
id INT UNSIGNED AUTO_INCREMENT,
code VARCHAR(10) NOT NULL,
name VARCHAR(256) NOT NULL,
PRIMARY KEY (id),
KEY (code),
FULLTEXT (name)
);

每个表有两行,从以下两个查询的结果可以看出:

从 Temp_Table_MyISAM 选择 *;

 +----+---------+----------------+  
| id | code | name |
+----+---------+----------------+
| 1 | AC-7865 | 38 NORTHRIDGE |
| 2 | DE-3514 | POLARIS VENTRI |
+----+---------+----------------+

从Temp_Table_InnoDB中选择*;

 +----+---------+----------------+  
| id | code | name |
+----+---------+----------------+
| 1 | AC-7865 | 38 NORTHRIDGE |
| 2 | DE-3514 | POLARIS VENTRI |
+----+---------+----------------+

当我在 MyISAM 表上进行全文搜索时,我没有得到任何命中

MariaDB [stackoverflow]> SELECT name, code FROM Temp_Table_MyISAM WHERE MATCH(name) AGAINST('38');
Empty set (0.00 sec)

MariaDB [stackoverflow]> SELECT name, code FROM Temp_Table_MyISAM WHERE MATCH(name) AGAINST('POLARIS');
Empty set (0.00 sec)

当我在 InnoDB 表上进行全文搜索时,仅当要匹配的模式不以数值开头时,我才会命中

MariaDB [stackoverflow]> SELECT name, code FROM Temp_Table_InnoDB WHERE MATCH(name) AGAINST('38');
Empty set (0.00 sec)

MariaDB [stackoverflow]> SELECT name, code FROM Temp_Table_InnoDB WHERE MATCH(name) AGAINST('POLARIS');

+----------------+---------+  
| name | code |
+----------------+---------+
| POLARIS VENTRI | DE-3514 |
+----------------+---------+

任何见解将不胜感激。

最佳答案

MyISAM 的 FULLTEXT 中有 3 条规则需要注意:

  • 短于 ft_min_word_len(默认 4 个字符)的文本单词将不会被编入索引。 (“38”)

  • 出现在超过 50% 或更多行中的搜索词将被忽略。 (“北极星”)

  • 文本中的“停用词”未编入索引。 (“该”,“和”,...)

由于 InnoDB 现在支持 FULLTEXT,因此您应该迁移到该引擎。 (那里的规则不同。)

关于MySQL (Windows10) 使用 MyISAM 表进行全文搜索不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48415088/

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