【问题标题】:How to view the index contents of a fulltext index in MySQL?如何在 MySQL 中查看全文索引的索引内容?
【发布时间】:2018-06-20 11:28:51
【问题描述】:

是否可以在 MySQL 中看到 FULLTEXT INDEX 的实际内容?或者直接查询索引(比如SELECT words FROM table.fulltext_index,它会返回所有被索引的单词,举个例子)?

对于标量字段上的常规 b 树索引,这不是必需的,因为它们只是相同的值,只是为了加快查找速度(基本上)。但是在全文索引中发生了如此多的“语言魔法”,以至于当对表格执行INSERT 时,很难知道索引中实际包含什么。

【问题讨论】:

    标签: mysql indexing full-text-search full-text-indexing


    【解决方案1】:

    MyISAM 有办法,但您可能没有使用该版本。它包括一种获取单词的方法。

    InnoDB 使用单词 + 行号(可能是PRIMARY KEY)+ 列(如果您将多个列一起索引)+ 列中的字节偏移量来构建倒排索引。我怀疑最后一项存储为 commalist (或类似的)。也就是说,我设想索引是这样的:

    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
    

    最后的排序将它们排在最前面;删除以按字母顺序获取它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-01
      • 2013-01-12
      • 2011-03-28
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 2011-05-26
      相关资源
      最近更新 更多