Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用MySQL构建倒排索引系统_Mysql - Fatal编程技术网

用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,这会变得很难看,但也就是

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

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

因此,我决定使用反向索引系统:

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)
    。主键作为
    索引
    文档
    的集合

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

  • 来自MySQL 5.0参考手册():

  • […]
    VARCHAR
    […]在MySQL 5.0.3之前,长度可以指定为0到255之间的值,在5.0.3及更高版本中,长度可以指定为0到65535之间的值


    太棒了,我不知道你的数据结构比我的数据结构快得多。很高兴知道在PHP5.0.3中,65535是VARCHAR的最大值。@james您可能会发现这些问题也很有趣:,这个方法中是否会出现任何类型的空间问题?其他流行的方法是什么?VARCHAR(100000)可能不是正确的选择-我很想说永远,但特别是在这种情况下。