小编bob*_*obo的帖子

使用多个索引进行全文搜索

我有一个包含几列的表格,例如a, b, cd应该是可搜索的。当我需要a, b, c单独搜索d(反之亦然)时,问题就出现了。AFAIK,没有办法在所有列上使用一个复合全文索引来实现这一点,所以我创建了两个单独的索引,如下所示:

CREATE FULLTEXT INDEX idx1 ON content (a, b, c);
CREATE FULLTEXT INDEX idx2 ON content (d);
Run Code Online (Sandbox Code Playgroud)

现在我可以成功搜索第一个和第二个。对于他们两个,我将使用以下命令:

SELECT * FROM content 
WHERE MATCH(a, b, c) AGAINST ('keyword')
AND MATCH(d) AGAINST ('keyword');
Run Code Online (Sandbox Code Playgroud)

explain 告诉我这个:

+----+-------------+---------+----------+---------------+------+---------+------+------+-------------+
| id | select_type | table   | type     | possible_keys | key  | key_len | ref  | rows | Extra       |
+----+-------------+---------+----------+---------------+------+---------+------+------+-------------+
|  1 | SIMPLE      | content | fulltext | …
Run Code Online (Sandbox Code Playgroud)

mysql index full-text-search

3
推荐指数
1
解决办法
3745
查看次数

标签 统计

full-text-search ×1

index ×1

mysql ×1