Google App Engine Search API会将某些字段优先于其他字段

时间:2014-06-21 19:43:30

标签: java google-app-engine

只是调查Google App Engine的功能,并对其搜索API非常感兴趣。我喜欢你如何定义不同的字段以自动标记并以不同的方式对搜索结果进行排序。

我的问题是,您是否可以按某种方式对结果进行排序,使某些字段优先于其他字段?

示例:

包含两个字段(标题和正文)的文档。如果匹配标题的搜索查询的排名高于匹配标题的查询。

这可能吗?

干杯

1 个答案:

答案 0 :(得分:2)

不幸的是,目前还不可能。来自文档:

  

默认情况下,搜索按降序排名返回结果。也是   默认情况下,Search API将每个文档的排名设置为秒   自2011年1月1日起。这导致最新鲜的文件   先回来但是,如果您不需要按文件排序   添加时间,您可以将排名用于其他目的。假设   你有房地产申请。客户最想要的是   按价格排序。对于有效的默认排序,您可以设置   排名到房价。

     

如果您需要多个排序订单,例如价格从低到高和价格   从高到低,您可以为每个订单创建单独的索引。一个指标   会有排名=价格而其他排名= MAXINT-price(因为排名   必须是积极的。)

在您的用例中,您可以在一个查询中检索其标题中具有匹配项的文档,然后在第二个查询中检索其主体中具有匹配项的文档。显然,您可以指定不同的规则(甚至是一组规则),例如:

  • 如果第一个查询返回的结果超过X,请不要执行第二个查询
  • 按标题检索前20个文档,如果最后一个文档的日期小于A,则按正文检索前10个文档
  • 按标题检索最佳的15个文档,并按正文添加最佳的5个文档

等等。当然,规则取决于您的域名以及您尝试对文档进行优先级排序的方式。