繁体   English   中英

传递AWS Cloudsearch查询的特定退货顺序

[英]Passing in specific return order for AWS Cloudsearch query

有没有一种方法可以告诉cloudsearch查询我要以特定顺序返回匹配结果?

我已经在Cloudsearch中填充了“产品”。 对于每个用户,我都有一个预定义的订单,希望这些产品出现。 用户可以按多个字段过滤产品,这将调用Cloudsearch并一次返回10个匹配项(ajax加载分页结果)

我怎样才能告诉Cloudsearch,一旦找到这些匹配项,我希望以特定客户的预定义顺序返回这些匹配项?

好的,因此无法为每个用户建立排名索引,并且我假设排名是任意的,而不是可以在CloudSearch排名表达式中表达的内容。 在您设置的约束范围内,我认为没有很好的方法可以做到这一点。

我能想到的最好的方法是获取查询的所有结果 ,然后根据数据库中的排名对它们进行排序。 CloudSearch相当快,您应该能够请求几千个结果集(在我的40k文档索引中,返回1000个结果集花费了大约400毫秒)。 然后,您必须根据它们在数据存储区中的排名对它们进行排序。 感觉很浪费,但是对于您正在处理的约束,这可能是最好的选择。

或者,您可以从数据库中获取该用户的前n项 ,然后用该用户的查询命中CloudSearch,检查结果中的前n项(这实际上可能是查询的一部分),并在搜索结果中分页直到您已经找到了足够的数据(在您的情况下为10个)显示给用户。

鉴于上述解决方案的效率低下,我强烈建议您重新评估您的约束条件:对搜索结果进行排名应真正由搜索引擎负责 分离责任,创建一个混乱的交接,理想情况下不应该存在。 也许您可以提出一个第三方排名算法的替代品,该算法可以表达为排名表达; 也许您可以通过数据库查询进行过滤,而不是使用cloudsearch。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM