Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL全文搜索外键中包含的数据_Mysql_Sql_Full Text Search_Myisam_Full Text Indexing - Fatal编程技术网

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

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个字段 我发布的全文搜索不会以这种方式工作,因为只有表中的列可以被索引,而不是外键值。有人对如何实现这种效果有什么想法吗?您可

首先,我的数据是使用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数据库,在进行全文搜索时,如何在查询中包含对外键的引用?