使用django-haystack / solr过滤搜索结果会产生solr语法错误

时间:2016-03-17 10:38:33

标签: django solr django-haystack

我想我可能已经发现了haystack / solr中的一个错误,但是我不确定并想知道我是否先做错了。我正在使用:

django 1.8 干草堆2.4.1 solr 4.10.4

当我尝试过滤我的SearchQuerySet时,SOLR会抱怨从haystack生成的过滤器查询语法无效。奇怪的是,单步执行pdb中的代码可以正常工作,但在正常情况下都会失败。代码的相关部分是:

$(".fieldname:nth-child(1)")
$(".fieldname:nth-child(2)")

执行此查询时,SOLR会抛出以下内容:

    # this is built from a query string but essentially resolves to something like
    applicable_filters = {'job_type__in':['PE', 'TE'], 'sector__in':['12','13']}

    # Do the query.
    sqs = SearchQuerySet().models(self._meta.queryset.model).filter(**applicable_filters).order_by(order).load_all().auto_query(request.GET.get('q', ''))
    if not sqs:
        sqs = EmptySearchQuerySet()

正如您所看到的,看起来haystack(或者pysolr?)正在向SOLR查询添加一个额外的AND子句,这似乎完全错误。真正奇怪的是,如果我在pdb中逐步执行相同的功能,它就可以工作。

我不知所措......

1 个答案:

答案 0 :(得分:0)

固定。

问题是我将空字符串传递给最终的auto_query()子句。我已经从一个嗖嗖的后端迁移出来,而且似乎比SOLR更容忍空搜索字符串。