【问题标题】:Building inverted indexing system with MySQL使用 MySQL 构建倒排索引系统
【发布时间】:2012-05-23 09:08:57
【问题描述】:

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

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

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

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

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

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

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

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

【问题讨论】:

  • VARCHAR(100000) 可能不是正确的选择——我很想说,但在这种情况下尤其如此。

标签: mysql


【解决方案1】:
  1. 数据结构:

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

    index 输入 INT, document 输入 CHAR(1)。主键为indexdocument 的集合。

    使用这种数据结构,查询将执行得非常快。
    顺便说一下,我建议的结构是normalized

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

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

【讨论】:

【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2012-03-16
    • 2012-10-17
    • 2012-08-30
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多