繁体   English   中英

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

[英]Filtering search results with django-haystack / solr produces solr syntax error

我想我可能已经在haystack / solr中发现了一个错误,但是我不确定,想先看看我是不是在做完全错误的事情。 我正在使用:

Django 1.8干草堆2.4.1 Solr 4.10.4

当我尝试过滤SearchQuerySet时,SOLR抱怨从干草堆生成的过滤查询中的语法无效。 奇怪的是,单步执行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相比,它更能容忍空搜索字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM