【问题标题】:Get a random search result from Amazon CloudSearch从 Amazon CloudSearch 获取随机搜索结果
【发布时间】:2015-08-26 09:52:28
【问题描述】:

我的查询是这样的:

/2013-01-01/search?q=(and author:'william' category:'Videos')&q.parser=structured&expr.random=_rand&return=_all_fields&size=1

并返回一个视频。但是,我希望每个请求都有一个随机的 videoId。

使用表达式 &expr.random=_rand; 我无法获取随机结果,并且在文档中找不到任何解决方案。

如何获得每个请求的随机搜索结果?

【问题讨论】:

    标签: amazon-cloudsearch


    【解决方案1】:

    CloudSearch 文档非常缺乏。我需要类似的东西,但在谷歌上遇到了短缺,所以我开始猜测,应用我已经知道的 Solr,我找到了一个解决方案:

    /2013-01-01/search?q=what&sort=_rand_1 desc
    

    请注意,_rand 也可以工作,但是在第一次搜索之后,它总是会返回相同的结果,如果您需要通过随机结果集进行分页,这实际上是理想的(它在 Solr 中的工作方式相同)。因此,每次需要随机生成一个 _something 并将其附加到 _rand 时,才能获得随机结果。

    【讨论】:

    • 只是为了完成c#中的注释我已经完成了这部分代码: var request = new SearchRequest() { ... Sort = string.Format("_rand_{0} desc", DateTime. Now.Ticks) .... };
    【解决方案2】:

    您可以通过将start 参数设置为0 到hits.found 之间的随机值并请求size=1 来实现此目的:

    search?q=matchall&q.parser=structured&size=1&start={yourRandomNumber}
    

    如果索引中的文档数量在波动,您需要进行 2 次查询:一次获取最大结果数(返回为 hits.found),另一次检索随机结果。

    【讨论】:

    • 感谢您的回复。我同意您的回答,但由于我的文档数量未知,因此我对提出双重请求的性能几乎没有混淆。
    猜你喜欢
    • 2019-09-10
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    • 2011-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多