使用Solr的Django haystack - 如何指定GET参数?

时间:2015-09-14 14:48:42

标签: django solr django-haystack

我正在使用django_haystack和Solr 4.9。我修改了/select请求处理程序,以便所有请求默认使用dismax。

问题在于,有时我想查询特定字段,但我找不到一种方法来获取SearchQuerySet api以使其与dismax很好地协作。所以基本上我想将以下(或等效)请求发送给Solr:q=hello&qf=content_auto

我尝试了以下方法:

标准Api

SearchQuerySet().filter(content_auto='hello') 

# understandably results in the following being sent to solr:
q=content_auto:hello

AltParser

query = AltParser('dismax', 'hello', qf="content_auto")
sqs = SearchQuerySet().filter(content=query)

# Results in
q=(_query_:"{!dismax+qf%3Dcontent_auto}hello")

原始

query = Raw('hello&qf=content_auto')

# results in
q=hello%26qf%3Dcontent_auto

最后一种方法非常接近,但由于它转发了=&,它似乎无法正确处理查询。

处理此问题的最佳方法是什么?我不需要非dismax查询,因此最好保持/select请求处理程序相同,而不是必须将每个查询都包装在RawAltParser中。

1 个答案:

答案 0 :(得分:1)

简而言之,答案是如果不创建自定义后端和SearchQuerySet就无法完成。最后,我不得不恢复标准配置并使用AltParser指定dismax,稍微有点烦人,因为它会影响您的拼写建议。