我基本上想使用 MatchScore 对我的文档进行排序,但是,提升那些有图像的文档。
为此,我的方法是在文档中添加一个具有提升值的字段,然后将该值乘以文档_score。
问题是,使用以下代码,我无法根据两个值的乘积对文档进行排序。Search API 返回按 _score 排序的文档,而不是我传递的 SortOptions 表达式。
sort_opts = SortOptions(
        match_scorer=search.MatchScorer(),
        expressions=[
            search.SortExpression(
                expression='_score * has_img',
                direction=search.SortExpression.DESCENDING,
                default_value=0.0
            )
        ]
    )
options = QueryOptions(
    limit=10,
    sort_options=sort_opts,
    returned_expressions=[
        FieldExpression('score', '_score * has_img'),
        FieldExpression('normalscore', '_score * 1')
    ]
)
index = search.Index(name='Search', namespace='search')
results = index.search(
    query=Query(
        query_string=search_query,
        options=options
    )
)
如您所见,为了进行调试,我返回了我想要排序的分数以及默认分数。它们但返回正确的值,但是,文档仍按默认分数排序。
关于我做错了什么的任何想法?