带有 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
请求处理程序相同,而不是必须将每个查询包装在 Raw
或 AltParser
.
简而言之,答案是如果不创建自定义后端和 SearchQuerySet 就无法完成。最后,我不得不恢复到标准配置并使用 AltParser
指定 dismax,这有点烦人,因为它会影响您的拼写建议。
我正在使用 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
请求处理程序相同,而不是必须将每个查询包装在 Raw
或 AltParser
.
简而言之,答案是如果不创建自定义后端和 SearchQuerySet 就无法完成。最后,我不得不恢复到标准配置并使用 AltParser
指定 dismax,这有点烦人,因为它会影响您的拼写建议。