MySQL全文搜索包含在外键中的数据

时间:2012-03-08 19:46:39

标签: mysql sql full-text-search myisam full-text-indexing

首先,我的数据是使用MyISAM引擎存储的,因为我知道InnoDB目前不支持linux上的全文搜索索引。但是,我确实使用了外键,但显然这并没有被引用。

我有3个表,包括制造商(man_id,名称),模型(model_id,man_id,名称)和产品(man_id,model_id,摘要,描述)。

我想要做的是在产品表上进行全文搜索,但包括制造商名称和型号名称以及摘要和说明。基本上搜索4个字段。

我发布全文搜索不会以这种方式工作,因为只能对表中的列进行索引而不是外键值。有没有人对如何实现这种效果有任何想法?

1 个答案:

答案 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. |
+----+---------------------------------------------+