使用django haystack/solr筛选搜索结果会产生solr语法错误
我想我可能在haystack/solr中发现了一个bug,但我不确定,我想先看看我是否做了一些完全错误的事情。我正在使用: django 1.8 干草堆2.4.1 solr 4.10.4 当我尝试筛选SearchQuerySet时,SOLR抱怨从haystack生成的筛选查询语法无效。奇怪的是,在pdb中单步执行代码是可行的,但在正常情况下都会失败。守则的有关部分如下:使用django haystack/solr筛选搜索结果会产生solr语法错误,django,solr,django-haystack,Django,Solr,Django Haystack,我想我可能在haystack/solr中发现了一个bug,但我不确定,我想先看看我是否做了一些完全错误的事情。我正在使用: django 1.8 干草堆2.4.1 solr 4.10.4 当我尝试筛选SearchQuerySet时,SOLR抱怨从haystack生成的筛选查询语法无效。奇怪的是,在pdb中单步执行代码是可行的,但在正常情况下都会失败。守则的有关部分如下: # this is built from a query string but essentially resolve
# 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()
执行此查询时,SOLR抛出以下内容:
[vagrant@127.0.0.1:2222] out: Failed to query Solr using '(job_type:("PE" OR "TE") AND sector:("12" OR "13") AND )': [Reason: org.apache.solr.search.SyntaxError: Cannot parse '(job_type:("PE" OR "TE") AND sector:("12" OR "13") AND )': Encountered " ")" ") "" at line 1, column 55.
如您所见,haystack(或者pysolr?)似乎正在向SOLR查询添加一个额外的AND子句,这似乎是完全错误的。真正奇怪的一点是,如果我在pdb中单步执行相同的函数,它就会工作
我不知所措……已修复
问题是我向最后一个auto_query()子句传递了一个空字符串。我从一个whoosh后端迁移过来,这似乎比SOLR更能容忍空搜索字符串