我试图搜索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一起做?
答案 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上阅读更多内容。