我正在使用Azure Search服务替换ElasticSearch集群,这主要是由于基础架构托管/监控问题。到目前为止,事情进展顺利,但我需要考虑的一个场景是为查询检索10个随机结果。在ElasticSearch中,我们只使用了Nest库中的RandomScore函数,这已经足够了。
我已经阅读了一些关于评分档案的内容,但这似乎并不符合我的需要,因为它没有随机评分聚合函数。
我是否遗漏了如何在本地做这件事的事情?
答案 0 :(得分:1)
不幸的是,无法在Azure搜索中获得随机排序的结果。请在我们的UserVoice上申请此功能,以帮助我们确定优先顺序:https://feedback.azure.com/forums/263029-azure-search
解决方法可能是在索引中添加一个字段,该字段在索引时在某个范围内填充一些随机生成的整数。当您要调用10个随机文档时,您的应用程序将在该范围内随机生成整数,以在该字段上创建过滤子句以获得随机化结果。
答案 1 :(得分:0)
此刻尝试一下。我正在使用两步过程:
$count=true
和$top=0
。查询结果应包含一个名为@ odata.count的字段。 $top=1
和$skip=<random number>
返回单个随机条目。有一个警告:$skip will only accept numbers less than 100000