【发布时间】:2015-09-14 14:48:41
【问题描述】:
我在 Solr 4.9 中使用 django_haystack。我已经修改了 /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 请求处理程序相同,而不是将每个查询包装在 Raw 或 AltParser 中。
【问题讨论】:
标签: django solr django-haystack