需要在Django Haystack中提供Solr boost功能的方法

时间:2019-05-03 17:45:16

标签: django solr django-haystack

我需要为搜索结果提供edismax提升功能feed_count follower_count^8.0,该功能应产生以下URL:

http://localhost:8983/solr/ng_core/select?bf=feed_count%20follower_count%5E8.0&defType=edismax&q=shad

最近一次我是通过搜索文档而来的,stackoverflow是使用AltParser进行过滤的,如下所示:

sqs.filter(text=AltParser('edismax', query, bf='feed count follower_count^8.0')

产生以下查询:

{!edismax bf='feed count follower_count^8.0' }shad

完全不返回结果。我在Solr仪表板中玩耍,即使我得到它返回结果,Solr解析它的方式也与预期查询有很大不同。

我尝试阅读如何将自定义查询参数添加到生成的查询中,但是Custom Input方法不能满足我的需要,因为它只能更改查询文本,而不能添加参数。

我当前要做的解决方法是这样:

sqs.query.get_results(defType='edismax', bf='feed_count')

因此,多余的杂项将传递给最终查询功能,但是,我真的不想跳出不错的SearchQuerySet链接,更重要的是,我无法让分页很好地工作:

sqs.query.get_results(defType='edismax', bf='feed_count')[offset:offset + page_size]

由于结果已被获取,因此无法使用

sqs[offset:offset + page_size].query.get_results(defType='edismax', bf='feed_count')

这将不起作用,因为现在sqs slice返回一个列表。

要正确运行它,我必须这样写:

query = sqs.query
query.set_limits(offset, offset + page_size)
query.get_results(defType='edismax', bf='feed_count')

感觉有些hacky。因此,有没有一种方法可以添加查询参数而不会破坏SearchQuerySet链?

0 个答案:

没有答案