用MySQL构建倒排索引系统

时间:2012-05-15 19:49:56

标签: mysql

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

该服务基于MySQL数据系统,搜索查询不足以提供快速搜索服务。

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

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

这是倒立索引系统的简单结构。

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

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

我现在选择了VARCHAR(100000)。是否可以将长度设置为9999999?

2 个答案:

答案 0 :(得分:10)

  1. 数据结构:

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

    index输入INTdocument输入CHAR(1)。主键设置为indexdocument

    此数据结构的查询速度非常快 顺便说一句,我建议的结构是normalized

  2. 从MySQL 5.0参考手册(The CHAR and VARCHAR Types):

  3.   

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

答案 1 :(得分:1)

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

TEXT    65,535 bytes    ~64kb
MEDIUMTEXT   16,777,215 bytes   ~16MB
LONGTEXT    4,294,967,295 bytes ~4GB