如何通过sql_attr_multi字段在SphinxQL中搜索

时间:2013-10-23 14:28:55

标签: sphinx

这是我对sphinxQL的查询:

SELECT  option_id FROM items WHERE cat IN (10,11) GROUP BY option_id LIMIT 100000 OPTION max_matches=100000

cat是sql_attr_multi字段,这个查询没有返回给我正确的结果。有谁知道如何通过这个sphinx属性按字段搜索?

2 个答案:

答案 0 :(得分:0)

该查询会查找cat属性包含10 OR 11的项目,这是您要执行的操作吗?

如果不是,那将有助于了解您 试图查询的内容!

答案 1 :(得分:0)

我有类似的问题。

当我将数组传递给IN条件以获得MVA属性时,我没有结果,但索引中有几个。 当我调试条件(属性数组(10,11))时,我看到数组值是字符串整数。

array(
  0 => "10",
  1 => "11"
)

对于条件中的每个值,使用quoteArr()函数 https://github.com/FoolCode/SphinxQL-Query-Builder/blob/master/src/SphinxQL.php#L518 根据{{​​3}}

来逃避价值

quote函数使用is_int()PHP内部函数:

$a = "1";
var_dump(is_int($a)); // return bool(false)

这意味着,而不是

cat IN (10, 11) 

你有

cat IN ("10", "11")

但是,狮身人面像不能通过非整数(字符串)值过滤MVA属性,不能使用met或IN WHERE表示法。

[1064] index document : unsupported filter type 'string' on MVA column [ SELECT * FROM `document` WHERE MATCH('(some query)') AND `_category` = '5' LIMIT 0, 10]

您应该使用严格的值类型:

foreach ($category as &$item) {
    $item = (int)$item;
} unset($item);

我不确定这是你的意思。不幸的是,在这种情况下,没有足够的数据可以肯定地说出来。