4

我正在构建一个需要大量搜索查询的移动服务。

该服务基于MySQL数据系统,搜索查询不足以做一个快速的搜索服务。

因此,我决定使用倒排索引系统:

index    Documents
1        a, b, c, d, e, f, g, h
2        c, k, i, j, k

这是倒排索引系统的简单构造。

我假设一行会有超过一千个文档。

我不确定“文档”列应该使用哪种类型和长度?

我现在选择了 VARCHAR(100000)。是否可以设置像 9999999 这样的长度?

4

2 回答 2

10
  1. 数据结构:

    index document
      1      a
      1      b
      1      c
     ...
      2      c
      2      k
    

    index类型INTdocument类型CHAR(1)。主键为index和的集合document

    使用这种数据结构,查询将执行得非常快。
    顺便说一下,我提出的结构是规范化的。

  2. 来自 MySQL 5.0 参考手册(The CHARand VARCHARTypes):

[...] VARCHAR[...] 在 MySQL 5.0.3 之前,长度可以指定为 0 到 255 之间的值,在 5.0.3 和更高版本中可以指定为 0 到 65,535 之间的值。

于 2012-05-15T20:04:06.560 回答
1

恕我直言,这会变得很难看,但话虽如此,您的 varchar 大小会覆盖它,或者您可以查看 TEXT、mediumTEXT 或 longTEXT:

TEXT    65,535 bytes    ~64kb
MEDIUMTEXT   16,777,215 bytes   ~16MB
LONGTEXT    4,294,967,295 bytes ~4GB
于 2012-05-15T19:57:55.020 回答