首先,我的数据是使用MyISAM引擎存储的,因为我知道InnoDB目前不支持linux上的全文搜索索引。但是,我确实使用了外键,但显然这并没有被引用。
我有3个表,包括制造商(man_id,名称),模型(model_id,man_id,名称)和产品(man_id,model_id,摘要,描述)。
我想要做的是在产品表上进行全文搜索,但包括制造商名称和型号名称以及摘要和说明。基本上搜索4个字段。
我发布全文搜索不会以这种方式工作,因为只能对表中的列进行索引而不是外键值。有没有人对如何实现这种效果有任何想法?
答案 0 :(得分:1)
您可以加入这些表并对联接运行搜索,如以下示例所示:
CREATE TABLE `tablename` (
`id` int(10) unsigned primary key AUTO_INCREMENT,
`stuff` text FULLTEXT KEY,
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
CREATE TABLE `table_b` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`stuff` text,
PRIMARY KEY (`id`),
FULLTEXT KEY `index_table_b_on_text` (`stuff`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
SELECT table_a.*
FROM table_b JOIN table_a ON table_a.id = table_b.id
WHERE MATCH(table_b.stuff) AGAINST ("hamster")
AND MATCH(table_a.stuff) AGAINST ("leopard");
+----+---------------------------------------------+
| id | stuff |
+----+---------------------------------------------+
| 3 | A brown leopard jumped over a lazy hamster. |
+----+---------------------------------------------+