这是我对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属性按字段搜索?
答案 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);
我不确定这是你的意思。不幸的是,在这种情况下,没有足够的数据可以肯定地说出来。