我有一个带有全文索引的MySql MyISAM表,如下所示:
CREATE TABLE `tblsearch` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(100) NOT NULL,
`brand` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `index_all` (`title`,`brand`)
) ENGINE=MyISAM AUTO_INCREMENT=1316109 DEFAULT CHARSET=utf8;
现在我需要编写一个这样的查询来查找具有确切标题和品牌的所有条目:
SELECT id FROM tblsearch WHERE title=?title AND brand=?brand;
查询只提供完全匹配很重要。我希望能够使用我已有的全文索引。是否可以编写查询,以便使用全文索引?
答案 0 :(得分:2)
这样的事情:
SELECT id
FROM tblsearch
WHERE MATCH (title, brand) AGAINST ("exact phrase")
AND CONCAT(title, ' ', brand) LIKE '%exact phrase%';
希望有所帮助
答案 1 :(得分:1)
如果您需要找到确切的标题或品牌,您需要使用具有经典索引的等运算符:
ALTER TABLE tblsearch ADD INDEX search_idx(title, brand);
SELECT id FROM tblsearch WHERE title = 'foo' AND brand = 'bar';
现在,如果您只需要在标题和品牌中匹配确切的字词:
SELECT id FROM tblsearch WHERE
MATCH(title) AGAINST('+foo' IN BOOLEAN MODE)
AND MATCH(brand) AGAINST('+bar' IN BOOLEAN MODE);