2016-07-11 12 views
2

Ist es möglich, eine "NICHT IN" -Syntax zu machen. Zum Beispiel:Algolia NICHT IN oder NICHT GLEICH

{"Persons" :[{"Name":"Matthew"},{"Name":"John"}]} 

Select * von Personen, bei denen Name = John

So im Wesentlichen alle Datensätze auswählen, die nicht John in Personen haben!.

+1

'obj.Persons.filter (person => person.Name! ==" John ")' – Thomas

Antwort

2

Kleiner Hinweis zuerst: Sie sollten immer Algolia in Verbindung mit einer Datenbank verwenden, eine Suchmaschine wird einen schlechten Job bei einigen Operationen, die Ihre Datenbank-Engine verarbeiten sollte.


Mit Algolia Facetten Ausgrenzung, es ist auf jeden Fall machbar:

Negationen werden unterstützt über den - Operator, der Facette Wert prefixing.
Zum Beispiel: encodeURIComponent('["category:Book","category:-Movie","author:John Doe"]')

Auszug aus der Dokumentation von facetFilters


Für Ihr Beispiel "Name" ist ein Teil von attributesForFaceting, die Abfrage, die Sie tun mögen, unter der Annahme, ist einfach:

index.search('query', { 
    facetFilters: 'Name:-John' 
}) 

Wenn Sie verwenden algoliasearch-helper-js ist die zu verwendende Methode addExcludeRefinement.


Schließlich ist es erwähnenswert, dass, wenn Ihr Attribut numerischen ist, Sie numericFilters stattdessen verwenden sollten.

+0

Wie würde ich das bei der Sofortsuche machen? searchParameters: { "disjunctiveFacetsRefinements": { // Facet Benutzer "E-Mail" Nach: "-Johannes" } –

+0

Wenn mich nicht alles täuscht, wäre es 'searchParameters sein: {facetsExcludes: {„Personen. Name ": ['John']}}' – Jerska