2016-12-01 36 views
1

我正在嘗試搜索Algolia,並且某個類別的搜索結果顯示在所有其他類別之前。如果你搜索pot然後阿爾戈利亞首先搜索某個類別的搜索

數據在Algolia

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

問題

比方說正常Algolia算法Harry Potter方式比電影Pottery更具相關性,因此通常:下面是一個例子Harry Potter會顯示在Pottery之前。

我想通過Algolia搜索字詞pot和類別movie,然後Pottery顯示在所有其他內容之前。它需要是動態的,即我應該能夠搜索pot類別book並首先得到Harry Potter

Algolia有沒有辦法做到這一點?

回答

4

實際上有一個很好的方法來使用「可選」方面的過濾器來實現這種行爲(即將推出的高級功能 - 截至2016/12/01)。

「可選構面過濾器」是一種構面過濾器,無需匹配即可檢索結果,但默認情況下會確保首先檢索具有構面值的匹配(感謝filters標準Algolia打破平局排名公式)。

這正是你想要的:在每一頁你想要一些結果共享category值首先被檢索;只需使用category:value可選構面過濾器查詢Algolia索引。

  • 確保您category屬性是你attributesForFacet指數在查詢時設置
  • 的一部分,查詢索引與index.search('', { optionalFacetFilters: ["category:book"])

你可以閱讀更多的this (beta) documentation page

+0

我需要類似的東西,但更復雜:http://stackoverflow.com/questions/41166479/complex-featured-product-model-using-query-time-ranking-optional-filters將不勝感激任何幫幫我! –