在使用containsAllObjectsInArray的am查询过程中,我遇到了一个限制。
解析中的对象具有最多包含12个字符串的数组属性,只要我的搜索查询数组是9个或更少的字符串,查询就能工作得很好。
当我使用PFQuery在这个表上执行一个containsAllObjectsInArray,并且我的搜索数组包含9个以上的对象时,我会得到以下错误。
错误:$all查询中太多的术语(代码: 154,版本: 1.2.19)
因此很明显,containsAllObjectsInArray只能在数组中搜索9个或更少的匹配项。
这个要修好吗?
我遵循了Parse的博客文章中关于使用标记( http://blog.parse.com/2013/03/19/implementing-scalable-search-on-a-nosql-backend/ )进行可伸缩搜索的文章。非常惊讶,这是推荐的方法,它炸弹后对象有9个以上的标签。
发布于 2014-08-05 18:58:43
在发布之前,我应该先尝试这样做,但我只需将搜索划分为最大大小为9的子数组,然后在多个containsAllObjectsInArray调用中将每个子数组添加到pfquery中。查询正常。有点像黑客,但现在起作用了。
发布于 2014-11-07 14:02:47
我应用了相同的解决方案,我用最多9个条目拆分了查询,并进行了工作。下面是PHP的示例代码:
$totalTags = count($tags);
$theQuery = new ParseQuery("articles");
if($totalTags > 9){
$c=0;
for($i=0;$i<($totalTags/9);$i++){
$limitArray = Array();
$h = 0;
$ini = $c;
$fin = min(9+$c,$totalTags);
for($j = $ini; $j < $fin; $j++){
$limitArray[$h] = $tags[$j];
$c++;
$h++;
}
$theQuery->containsAll("tags", $limitArray);
}
}else{
$theQuery->containsAll("tags", $tags);
}
$articles = $theQuery->find();https://stackoverflow.com/questions/25146184
复制相似问题