Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用django haystack/solr筛选搜索结果会产生solr语法错误_Django_Solr_Django Haystack - Fatal编程技术网

使用django haystack/solr筛选搜索结果会产生solr语法错误

使用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

我想我可能在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 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更能容忍空搜索字符串