Mysql 与数字关键字匹配



我使用mysql全文索引。我发现它无法匹配"1,2,3"或"1 2 3"中的键数字词"1"。我使用此查询"从用户中选择 * WHERE match(u.leader_uids) against ('1' 在布尔模式下);"

如何解决这个问题?多谢!

我正在提供示例,希望它对您有用,我认为它对您有用

MATCH (field) AGAINST ('+856049' IN BOOLEAN MODE)

它仅适用于 4 位或更多位数的单词。因此,在保存之前,您必须在leader_uid中连接一些前缀。例:

CREATE TABLE mytable(
    id INT NOT NULL KEY AUTO_INCREMENT,
    myfield TEXT,
    FULLTEXT KEY ix_mytable (myfield)
);
INSERT INTO mytable (myfield) VALUES 
    ('id_1 id_2 id_3'),
    ('id_8'),
    ('id_4 id_1');
SELECT * FROM mytable 
    WHERE MATCH(myfield) AGAINST ('+id_1' IN BOOLEAN MODE);
-- will select rows 1 and 3

您可以在 mysql 配置中更改单词所需的最小字符数:https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_ft_min_token_size

相关内容

最新更新