我正在使用django_haystack和Solr 4.9。我修改了/select
请求处理程序,以便所有请求默认使用dismax。
问题在于,有时我想查询特定字段,但我找不到一种方法来获取SearchQuerySet
api以使其与dismax很好地协作。所以基本上我想将以下(或等效)请求发送给Solr:q=hello&qf=content_auto
我尝试了以下方法:
SearchQuerySet().filter(content_auto='hello')
# understandably results in the following being sent to solr:
q=content_auto:hello
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
请求处理程序相同,而不是必须将每个查询都包装在Raw
或AltParser
中。
答案 0 :(得分:1)
简而言之,答案是如果不创建自定义后端和SearchQuerySet就无法完成。最后,我不得不恢复标准配置并使用AltParser
指定dismax,稍微有点烦人,因为它会影响您的拼写建议。