Algolia首先搜索某个类别

时间:2016-12-01 20:57:50

标签: algolia

我试图搜索Algolia并在所有其他类别之前显示特定类别的结果。这是一个例子:

Algolia的数据

{ name: Harry Potter, category: book},
{ name: The Avengers, category: movie},
{ name: Pottery, category: movie}

问题

让我们说正常的Algolia算法Harry Potter方式比电影Pottery更具相关性,所以通常如果你搜索pot那么Harry Potter会出现在Pottery之前。

我想将搜索字词pot和类别movie传递给Algolia,然后让Pottery显示在其他所有内容之前。它必须是动态的,即我应该能够使用类别pot搜索book并首先获得Harry Potter

有没有办法与Algolia一起做?

1 个答案:

答案 0 :(得分:4)

使用" optional"实际上有一种很好的方法可以实现这种行为。 facet过滤器(即将发布的高级功能 - 截至2016/12/01)。

一个"可选的Facet过滤器"是一个不需要匹配以检索结果的构面过滤器,但是 - 默认情况下 - 确保首先检索具有构面值的命中(感谢Algolia的filters标准&#39 ;打破平局排名公式)。

这正是您想要的:在您希望首先检索共享category值的某些结果的每个页面上;只需使用category:value可选构面过滤器查询Algolia索引。

  • 确保您的category属性属于attributesForFacet索引设置
  • 在查询时,使用index.search('', { optionalFacetFilters: ["category:book"])
  • 查询索引

您可以在this (beta) documentation page上阅读更多内容。