MySQL全文搜索外键中包含的数据
首先,我的数据是使用MyISAM引擎存储的,因为我知道InnoDB目前在linux上不支持全文搜索索引。然而,我确实使用外键,尽管这显然不是引用强制的 我有3个表,包括制造商(制造商id、名称)、型号(型号id、制造商id、名称)和产品(制造商id、型号id、摘要、说明) 我想做的是在products表上进行全文搜索,但包括制造商名称和型号名称以及摘要和说明。基本上搜索4个字段MySQL全文搜索外键中包含的数据,mysql,sql,full-text-search,myisam,full-text-indexing,Mysql,Sql,Full Text Search,Myisam,Full Text Indexing,首先,我的数据是使用MyISAM引擎存储的,因为我知道InnoDB目前在linux上不支持全文搜索索引。然而,我确实使用外键,尽管这显然不是引用强制的 我有3个表,包括制造商(制造商id、名称)、型号(型号id、制造商id、名称)和产品(制造商id、型号id、摘要、说明) 我想做的是在products表上进行全文搜索,但包括制造商名称和型号名称以及摘要和说明。基本上搜索4个字段 我发布的全文搜索不会以这种方式工作,因为只有表中的列可以被索引,而不是外键值。有人对如何实现这种效果有什么想法吗?您可
我发布的全文搜索不会以这种方式工作,因为只有表中的列可以被索引,而不是外键值。有人对如何实现这种效果有什么想法吗?您可以连接这些表并对连接运行搜索,如下例所示:
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. |
+----+---------------------------------------------+
InnoDB从v5.6.4开始支持全文索引:因此,如果您愿意,您可以放弃MyISAM解决方案,现在开始全面开发InnoDB。@MarcB是的,这是事实,不幸的是,此版本仅作为基于Microsoft的服务器的开发版本发布。基于Linux的服务器(我正在使用的)的最新版本是v5.5,它仍然没有这个功能。假设这是一个支持全文搜索的InnoDB数据库,在进行全文搜索时,如何在查询中包含对外键的引用?