2017-03-29 4 views
0

Lassen Sie sich sagen, dass wir einen Index mit zwei Objekten haben:Objekt mit längerem Feld gegen ein Objekt mit einem kurzen Feld zurückgegeben wird

{ 
"name": "iPhone 6s Plus big screen, super fast, ultra responsive, blah blah" 
} 

und:

{ 
"name" : "iPhone 6s Plus" 
} 

Nun, wenn ich für suchen iPhone 6s Plus, gibt es das erste Objekt zurück, das keinen Sinn ergibt, da das erste Objekt mehr Wörter (oder Rauschen) als das zweite Objekt für die gegebene Abfrage enthält. Mit anderen Worten, ein Begriff, der in einem Kurznamenfeld erscheint, sollte mehr Rangpunkte tragen als der gleiche Begriff in einem Langnamenfeld.

Algolia verwendet einen TF/IDF-Algorithmus, der die Feldlängennorm berücksichtigt, also das zweite Objekt sollte eine höhere Punktzahl als das erste haben.

Warum hat das erste Objekt also eine höhere Punktzahl als das zweite? Gibt es irgendwelche Einstellungsoptionen, die ich vermisse?

+0

Algolia verwendet einen Tiebreaking-Algorithmus mit mehreren verschiedenen Kriterien. Weitere Informationen finden Sie hier: https://www.algolia.com/doc/guides/relectivity/ranking/#ranking-formula-a-tie-breaking-algorithmus –

+0

@JoshDzielak danke dafür! Ich habe eine Antwort geschrieben und kann sie gerne bearbeiten, da sie anderen helfen kann! Vielen Dank! – flienky

Antwort

0

Ich fand die Antwort, aber ich bin mir nicht sicher, ob es 100% korrekt ist, oder ob es einen besseren Weg gibt, dies zu erreichen.

Bei Algolia anmelden -> Wählen Sie Ihre Instanz -> Gehen Sie zu Ranking Tab.

Fügen Sie in der Ranking Formel eine neue Zeile hinzu. Die neue Zeile sollte haben Attribut Typ {{der Name der Spalte, in diesem Beispiel ist "title"}} und setzen Sie es auf Aufsteigend.

Damit werden Sie erreichen, was wir suchen.

+0

Dies wird eine Sortierung nach dem vollen Wert dieses Feldes erzwingen, was in diesem Fall funktioniert, aber andere Probleme verursachen könnte - dies könnte jedes benutzerdefinierte Ranking außer Kraft setzen, das Sie angeben. –

0

Eine Option besteht darin, den Wert in zwei verschiedene Attribute aufzuteilen, einen für nur den Produktnamen und einen anderen für die Beschreibung. Dadurch können Sie auch den Produktnamen in Ihren durchsuchbaren Attributen priorisieren, was in den meisten Fällen zu einer besseren Relevanz führen würde.

Verwandte Themen