用MySQL构建倒排索引系统
我正在构建一个需要大量搜索查询的移动服务 该服务基于MySQL数据系统,搜索查询不足以提供快速搜索服务 因此,我决定使用反向索引系统:用MySQL构建倒排索引系统,mysql,Mysql,我正在构建一个需要大量搜索查询的移动服务 该服务基于MySQL数据系统,搜索查询不足以提供快速搜索服务 因此,我决定使用反向索引系统: index Documents 1 a, b, c, d, e, f, g, h 2 c, k, i, j, k 这是反转索引系统的一个简单构造 我假设一行将有上千个文档 我不确定“文档”列应该使用哪种类型和长度? 我现在选择了VARCHAR(100000)。可以将长度设置为9999999吗?IMHO,这会变得很难看,但也就是
index Documents
1 a, b, c, d, e, f, g, h
2 c, k, i, j, k
这是反转索引系统的一个简单构造
我假设一行将有上千个文档
我不确定“文档”列应该使用哪种类型和长度?
我现在选择了VARCHAR(100000)。可以将长度设置为9999999吗?IMHO,这会变得很难看,但也就是说,您的varchar大小将覆盖它,或者您可以查看文本、mediumTEXT或longTEXT:
TEXT 65,535 bytes ~64kb
MEDIUMTEXT 16,777,215 bytes ~16MB
LONGTEXT 4,294,967,295 bytes ~4GB
index document
1 a
1 b
1 c
...
2 c
2 k
索引
类型INT
,文档
类型CHAR(1)
。主键作为索引
和文档
的集合
使用此数据结构,查询将执行得非常快。顺便说一下,我建议的结构是
VARCHAR
[…]在MySQL 5.0.3之前,长度可以指定为0到255之间的值,在5.0.3及更高版本中,长度可以指定为0到65535之间的值
太棒了,我不知道你的数据结构比我的数据结构快得多。很高兴知道在PHP5.0.3中,65535是VARCHAR的最大值。@james您可能会发现这些问题也很有趣:,这个方法中是否会出现任何类型的空间问题?其他流行的方法是什么?VARCHAR(100000)可能不是正确的选择-我很想说永远,但特别是在这种情况下。