结合两个Haystack查询集的结果

时间:2014-11-09 09:02:38

标签: django elasticsearch django-haystack

我有以下两个查询集:

q = Q(is_visible='true')
q |= Q(user='some_user')
q &= Q(text=request.GET.get('query', ''))

sqs1 = SearchQuerySet().filter(q)

sqs2 = SearchQuerySet().models(model.Some).filter(text=request.GET.get('query', ''))

如果我只将这两个查询集合在一起,我就得不到我想要的东西了。由于元素将针对其特定查询进行评分。我想要的是以某种方式将这两个查询组合在一起传递给SearchQuerySet之前,以便搜索后端计算整个集合的得分。

我想到了以某种方式将第二个查询放入第一个查询的Q链中,但我无法弄清楚如何根据模型进行搜索。

1 个答案:

答案 0 :(得分:3)

所以我通过使用以下查询解决了这个问题:

request_text = request.GET.get('query', '')
user = request.user
sqs = SearchQuerySet().filter(text=request_text).exclude(~Q(user='some_user') | Q(is_visible='false')

看起来,可以使用过滤器和排除来重新解释问题。