如何在MySQL中为两个表创建FULLTEXT索引?

问题描述

我有两个看起来像这样的表:

表#1:

CREATE TABLE iteminfo
(Code CHAR(1) PRIMARY KEY,Tags TEXT NOT NULL);

表2:

CREATE TABLE items
(ID INT UNSIGNED PRIMARY KEY,Name VARCHAR(255) NOT NULL,Code CHAR(1),FOREIGN KEY (Code) REFERENCES iteminfo(Code));

我想使用两个表中的名称标签字段创建FULLTEXT索引。我认为我将不得不使用EQUIJOIN或类似的东西,但这是行不通的:

ALTER TABLE items JOIN iteminfo WHERE items.Code = iteminfo.Code
ADD FULLTEXT (Name,Tags);

我想知道:

这甚至有可能做到吗? 如果是,那我该怎么办? 如果否,那么还有什么其他方法可以索引不同表中存在的两个列?

感谢您提前回答!抱歉,这个问题已经存在,但无法在线找到答案。

解决方法

否。

但是...有意义的是,将来自各个表的各个列一起收集到一个列中,并对其应用FULLTEXT索引。

假设每个item都有许多标签,则可以通过以下方式进行初始化:

CREATE search_info ( PRIMARY KEY(name) )
SELECT name,CONCAT(name,' ',( SELECT GROUP_CONCAT(tags) FROM iteminfo
                      WHERE code = items.code ) ) AS search
    FROM items;

然后

ALTER TABLE search_info ADD FULLTEXT(search);

(此后,对itemsiteminfo的更改还需要修改search_info。)

,

我厌倦了@RickJames的回答中提出的建议,这似乎是解决我的问题的方法。对于其他可能想知道的人,这是我的工作,但仅以我在原始问题中提供的信息为背景:

ALTER TABLE items ADD COLUMN Tags TEXT;

UPDATE items
SET search = CONCAT(name,(SELECT GROUP_CONCAT(tags) FROM iteminfo WHERE code = items.code))
WHERE Code IS NOT NULL;

ALTER TABLE items ADD FULLTEXT(Tags);