mysql - 如何在 MySQL 中查看全文索引的索引内容?
问题描述
FULLTEXT INDEX
是否可以在 MySQL中看到 a 的实际内容?或者甚至直接查询索引(就像SELECT words FROM table.fulltext_index
它会返回所有索引的单词,只是举个例子)?
对于标量字段上的常规 b 树索引,这不是必需的,因为它们只是相同的值,只是为了加快查找速度(基本上)。INSERT
但是在全文索引中发生了如此多的“语言魔法”,以至于在对表格进行操作时很难知道索引中实际出现的内容。
解决方案
MyISAM 有办法,但您可能没有使用该版本。它包括一种获取单词的方法。
PRIMARY KEY
InnoDB 使用单词 + 行号(可能)+ 列(如果您将多个列一起索引)+ 列中的字节偏移来构建倒排索引。我怀疑最后一项存储为 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
最后一种是最常见的。删除以按字母顺序获取它们。
推荐阅读
- wordpress - 如何解决“JWT 配置不正确”的问题?
- css - 无法在本机反应中显示获取数据
- huggingface-transformers - Huggingface 的 `beam_search()` 和 `group_beam_search()` 有什么区别
- python - python高阶函数:我如何逐步阅读代码?
- gitlab - GitLab 服务的启动顺序是什么?
- angular - CDK 拖放延迟
- python - 我收到错误“张量()缺少 1 个必需的位置参数:'数据'”
- postgresql - 在更多条件下拆分字符串
- sql - 从包含特定 COLLID 且不包含另一个特定 COLLID 的 PACKLIST 中选择 PLANNAME?
- android-studio - 每次打开模拟器时如何修复我的模拟器它不会自动打开我的应用程序