gpt4 book ai didi

mysql - 全文搜索不适用于两列

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

背景:

嘿,我正在使用MySQL 5.6.17 InnoDB,我在mysql网站上读到FULLTEXT现在可用于5.6+版本的InnoDB。所以我不必从 InnoDB 更改为 MyISAM Here is the link我使用以下查询更改了两个表列以进行全文搜索

ALTER TABLE `es_officers` ADD FULLTEXT Index_officer_name (es_officer_name)
ALTER TABLE `es_officers` ADD FULLTEXT Index_officer_fname (es_officer_fname)

信息架构中注册的更改表:

然后,我通过运行以下查询来检查我的信息架构中更改的表列是否已注册

SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME
FROM statistics
WHERE index_type LIKE 'FULLTEXT%'

它向我展示了我所期待的两个结果

Information Schema results

问题:

当我编写一个查询来匹配两列的字符串时,它给了我一个错误

SELECT * FROM `es_officers` WHERE MATCH (es_officer_name, es_officer_fname) AGAINST ('abc')

#1191 - Can't find FULLTEXT index matching the column list

但是:

当我尝试像下面这样单独查询列时,它工作得很好

SELECT * FROM `es_officers` WHERE MATCH (es_officer_name) AGAINST ('abc')

SELECT * FROM `es_officers` WHERE MATCH (es_officer_fname) AGAINST ('abc')

我不知道我做错了什么,非常感谢帮助。

最佳答案

多个问题:

您有两个独立的全文索引,每个索引覆盖一个字段。您将 WHERE MATCH (es_officer_name, es_officer_fname) 作为查询,这需要一个涵盖这两个字段的 SINGLE 索引。 MySQL 不会为此查询使用两个单独的索引——它不能。这不是全文索引的工作原理。您需要添加alter ... fulltext (es_officer_name, es_officer_fname)

即使如此,abc 仍将属于默认值 minimum word length并且不会被索引。

关于mysql - 全文搜索不适用于两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37950146/

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