Sphinx/MVA

来自站长百科
跳转至: 导航、​ 搜索

Sphinx | 安装 | 建立索引|搜索|命令行工具参考|MySQL存储引擎

多值属性MVA (multi-valued attributes)是文档属性的一种重要的特例,MVA使得向文档附加一系列的值作为属性的想法成为可能。这对文章的tags,产品类别等等非常有用。MVA属性支持过滤和分组(但不支持分组排序)。

目前MVA列表项的值被限制为32位无符号整数。列表的长度不受限制,只要有足够的RAM,任意个数的值都可以被附加到文档上(包含MVA值的.spm文件会被searchd预缓冲到RAM中)。MVA的源数据来源既可以是一个单独的查询,也可以是文档属性,参考 sql_attr_multi中的来源类型。在第一种情况中,该查询须返回文档ID和MVA值的序对;而在第二种情况中,该字段被分析为整型值。对于多值属性的输入数据的顺序没有任何限制,在索引过程中这些值会自动按文档ID分组(而相同文档ID下的数据也会排序)。

在过滤过程中,MVA属性中的任何一个值满足过滤条件,则文档与过滤条件匹配(因此通过排他性过滤的文档不会包含任何被禁止的值)。按MVA属性分组时,一篇文档会被分到与多个不同MVA值对应的多个组。例如,如果文档集只包含一篇文档,它有一个叫做tag的MVA属性,该属性的值是5、7和11,那么按tag的分组操作会产生三个组,它们的@count都是1,@groupby键值分别是5、7和11。还要注意,按MVA分组可能会导致结果集中有重复的文档:因为每篇文文档可能属于不同的组,而且它可能在多个组中被选为最佳结果,这会导致重复的ID。由于历史原因,PHP API对结果集的行进行按文档ID的有序hash,因此用PHP API进行对MVA属性的分组操作时你还需要使用 SetArrayResult().

参考来源[ ]

Sphinx使用手册导航

安装

支持的操作系统|需要的工具|在Linux、BSD上安装Sphinx|在Windows上安装Sphinx|已知的安装问题和解决办法|Sphinx快速入门教程

建立索引

数据源|属性|MVA|索引|源数据的限制|字符集、大小写转换和转换表|SQL 数据源|xmlpipe 数据源|xmlpipe2 数据源|Python 数据源|实时索引更新|索引合并

搜索

匹配模式|布尔查询语法|扩展查询语法|权值计算|排序模式|结果分组|分布式搜索|searchd查询日志格式|MySQL 协议支持与SphinxQL

命令行工具参考

indexer命令参考|searchd命令参考|search命令参考|spelldump命令参考|indextool命令参考

MySQL存储引擎

SphinxSE 概览|安装 SphinxSE|使用 SphinxSE|通过 MySQL 生成片段