带有 Solr 的 Django haystack - 如何指定 GET 参数?

Django haystack with Solr - how to specify GET parameters?

我正在使用 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.

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