是否可以在MySQL中查看FULLTEXT INDEX
的实际内容?甚至直接查询索引(例如SELECT words FROM table.fulltext_index
,它会返回所有索引的单词,仅举一个例子)?
对于标量字段上的常规b树索引,这不是必需的,因为它们只是相同的值,只是为了加快查找(基本上)而定。但是在全文索引中,发生了太多的“语言魔术”,以至于在对表进行INSERT
时很难知道索引中实际包含的内容。
答案 0 :(得分:1)
MyISAM有办法,但是您可能没有使用该版本。它包括一种获取单词的方法。
InnoDB使用单词+行号(可能是PRIMARY KEY
)+列(如果您同时索引多个列)+列的字节偏移量来构建反向索引。我怀疑最后一项存储为逗号(或类似格式)。也就是说,我设想索引是这样的:
CREATE TABLE ft_index_for_table_x (
word VARCHAR ...,
pk ..., -- possibly multiple columns
col ..., -- which column the word occurs in
offsets ..., -- list of byte offsets
PRIMARY KEY(word, pk, col)
) ENGINE=InnoDB -- but not really.
此外,请注意,有一堆临时文件。这些似乎在最终合并到上面的结构之前收集了索引信息。
我还没有听说过用于检查索引的工具。
这有所帮助,但我认为这不是单词列表:
strings FTS*.ibd |
awk '/^[a-z]+$/' |
sort |
uniq -c |
sort -nr
最后一种排序使他们获得最频繁的优先;删除以按字母顺序排列。