无法使用Sphinx MVA sql_attr_multi

时间:2013-07-23 16:15:33

标签: sphinx multivalue

我有一个名为“标签”的字段,它有值(比如)“音乐,艺术,体育,食物”等。我如何在PHP-Sphinx中使用setFilter函数来获取此字段。我知道它必须是一个整数,应该在PHP中用作数组。所以,如果我使用数字字段标记,那么分隔符(在本例中为逗号)。目前,我正在使用像这样的“sql_attr_multi”......

sql_attr_multi = uint tags from field

我必须根据用户选择的任何关键词,音乐,体育,食品等过滤搜索。因此,只有MVA才是这样做的正确选择。但我只是无法弄清楚,如何做到这一点。我可以将所有标记元素存储为数值,并将标记字段设置为int。但是逗号怎么样或者如何将整个字符串(音乐,艺术,体育,食物)转换为整数。稍后,如何使用PHP调用setFilter。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

使用MVA,建议您已经为每个标签添加了唯一ID。

如果你有一个单独的标签表(带有PK),以及加入你的文件和标签的多对多表。 (这是存储标签的一种非常常见的方式 - 正常形式)

如果您有包含文本的文本列,则更容易使用Field。可以轻松地按主文本查询中的字段进行过滤。

脆皮面霜@tags Food

例如

(那是扩展模式查询)

(但是字段不能像属性那样进行分组)