2017-09-06 3 views
0

Ich habe ein Index, der diese Attribute enthält: Name, Adresse, Stadt, Bundesland, PostleitzahlForce-Abfrage mehr als ein Attribut übereinstimmen

ich eine allOptional Suche tun wollen, aber ich will nicht, Stadt, Staat, oder zip, um zu passen, ohne dass Name oder Adresse übereinstimmen. So eine Suchanfrage von McDonalds würde in jeder Stadt/Staat alle McDonalds übereinstimmen, McDonalds Chicago zurückkehren würde alle McDonalds in Chicago und McDonalds 60007 zurückkehren würde alle McDonalds in der Postleitzahl 60007.

Aber eine Suchabfrage von Chicago oder Chicago IL würde 0 zurück Ergebnisse.

Ich habe die Filter und Facetten Dokumentation gelesen und ich denke, das sollte mit einem Filter möglich sein, aber ich kann nicht herausfinden, wie.

Antwort

0

Sie können dieses Problem lösen, indem Sie die Ergebnisse nach dem Empfang nachbearbeiten, bevor Sie sie rendern.

Sie können die _highlightResult Daten in der Trefferantwort verwenden, um Treffer herauszufiltern, bei denen die Abfrage in bestimmten Attributen nicht übereinstimmt.

Zum Beispiel Treffer zu entfernen, wo die Abfrage nicht entweder im name oder address Attribute abgestimmt ist:

var displayedResults = response.hits.filter(hit => { 
    return hit._highlightResult.name.matchLevel !== 'none' || hit._highlightResult.address.matchLevel !== 'none'; 
}); 
+0

hmmm, nicht gedacht hatte. Wäre das nicht die Anzahl der zurückgegebenen Ergebnisse? Ich nehme an, ich könnte mehr verlangen als ich eigentlich möchte und dann die Ergebnisse filtern. –

+0

Sie haben Recht, es würde die Ergebnisse als ungenau erscheinen lassen, was je nach Anwendungsfall nicht akzeptabel ist – alexandremeunier

Verwandte Themen