gpt4 book ai didi

mysql - 全文搜索添加与其他表的关系但返回 0 个结果

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

我正在运行 innodb 5.6.17。我有一个 data_blocks 表,其中包含 TEXT 类型的列标签。我启用了全文索引,以便我可以将多个标记行链接到该行。像这样:

tags
[16][3]
[18][3]

这些数字是指向标签表中标签的 ID。data_block 可以包含任意数量的标签组合。我找不到一种方法将其从一对多关系链接起来,因此我创建了这种格式的文本列。它工作得相当好,但使用起来很慢

WHERE tags LIKE "%[16]%";

我尝试使用全文搜索

SELECT * FROM data_blocks WHERE MATCH(tags) AGAINST("+[16]");

但是这返回了 0 个结果。我已经将 ft_min_word_len 减少到 3,这样事件将搜索一位数字 id,但它仍然返回 0。

如果我需要以完全不同的方式执行此操作,请告诉我,否则,为什么全文搜索不返回任何行?

谢谢

最佳答案

如果您有关系表标签,您可以执行以下操作:

SELECT d.*
FROM data_blocks AS d
JOIN tags AS t ON d.id = t.data_block_id
GROUP by d.id
HAVING SUM(t.tag = 16) = COUNT(*)

SUM(t.tag = 16) 是具有该标记的行数,而 COUNT(*) 是总行数。因此,HAVING 子句匹配的数据 block 的行数与具有所选标记的行数完全相同。

tags 表应定义为:

CREATE TABLE tags (
tag INT,
data_block_id INT,
UNIQUE KEY (tag, data_block_id),
FOREIGN KEY (data_block_id) REFERENCES data_blocks (id)
);

关于mysql - 全文搜索添加与其他表的关系但返回 0 个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32577133/

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