2016-12-01 4 views
1

Ich versuche Algolia zu suchen und Ergebnisse für eine bestimmte Kategorie zeigen vor allen anderen Kategorien. Hier ein Beispiel:Algolia Suche mit einer bestimmten Kategorie zuerst

Daten in Algolia

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

Problem

Lassen Sie uns sagen, dass der normale Algolia Algorithmus Harry Potter Weise relevanter als der Film hat Pottery, so normal, wenn Sie pot gesucht dann Harry Potter würde vor Pottery angezeigt werden.

Ich möchte Algolia den Suchbegriff pot und die Kategorie movie und dann haben Pottery zeigen vor allem anderen. Es muss dynamisch sein, d. H. Ich sollte in der Lage sein, pot mit der Kategorie book zu suchen und zuerst Harry Potter zu bekommen.

Gibt es eine Möglichkeit, dies mit Algolia zu tun?

Antwort

4

Es gibt tatsächlich eine nette Möglichkeit, dieses Verhalten mit "optionalen" Facettenfiltern zu implementieren (eine in Kürze erscheinende erweiterte Funktion - Stand 2016/12/01).

Ein "optionaler Facettenfilter" ist ein Facettenfilter, der nicht übereinstimmen muss, um ein Ergebnis abzurufen. Stattdessen wird standardmäßig sichergestellt, dass die Treffer mit dem Facettenwert zuerst abgerufen werden (filters) von Algolias tire-breaking Ranking-Formel).

Dies ist genau das, was Sie wollen: auf jeder einzelnen Seite, wo Sie wollen, dass einige Ergebnisse einen category Wert zuerst abgerufen werden; Fragen Sie einfach den Algolia-Index mit dem optionalen Facettenfilter category:value ab.

  • sicherstellen, dass Ihr category Attribut Teil Ihrer attributesForFacet Index Einstellung
  • zum Zeitpunkt der Abfrage ist, fragen Sie den Index mit index.search('', { optionalFacetFilters: ["category:book"])

Sie mehr auf this (beta) documentation page lesen kann.

+0

Ich brauche etwas ähnliches, aber noch komplexer: http://stackoverflow.com/questions/41166479/complex-featured-product-model-usery-time-ranking-optional-filters Würde mich über alle freuen Hilfe! –

Verwandte Themen