我需要为搜索结果提供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链?