我正在构建一个需要大量搜索查询的移动服务。
该服务基于MySQL数据系统,搜索查询不足以做一个快速的搜索服务。
因此,我决定使用倒排索引系统:
index Documents
1 a, b, c, d, e, f, g, h
2 c, k, i, j, k
这是倒排索引系统的简单构造。
我假设一行会有超过一千个文档。
我不确定“文档”列应该使用哪种类型和长度?
我现在选择了 VARCHAR(100000)。是否可以设置像 9999999 这样的长度?
我正在构建一个需要大量搜索查询的移动服务。
该服务基于MySQL数据系统,搜索查询不足以做一个快速的搜索服务。
因此,我决定使用倒排索引系统:
index Documents
1 a, b, c, d, e, f, g, h
2 c, k, i, j, k
这是倒排索引系统的简单构造。
我假设一行会有超过一千个文档。
我不确定“文档”列应该使用哪种类型和长度?
我现在选择了 VARCHAR(100000)。是否可以设置像 9999999 这样的长度?
数据结构:
index document
1 a
1 b
1 c
...
2 c
2 k
index类型INT,document类型CHAR(1)。主键为index和的集合document。
使用这种数据结构,查询将执行得非常快。
顺便说一下,我提出的结构是规范化的。
来自 MySQL 5.0 参考手册(The CHARand VARCHARTypes):
[...]
VARCHAR[...] 在 MySQL 5.0.3 之前,长度可以指定为 0 到 255 之间的值,在 5.0.3 和更高版本中可以指定为 0 到 65,535 之间的值。
恕我直言,这会变得很难看,但话虽如此,您的 varchar 大小会覆盖它,或者您可以查看 TEXT、mediumTEXT 或 longTEXT:
TEXT 65,535 bytes ~64kb
MEDIUMTEXT 16,777,215 bytes ~16MB
LONGTEXT 4,294,967,295 bytes ~4GB