2017-03-16 2 views
0

Ich habe in meinem Algolia Motor die nächste „Einheit“Algolia bedingte Suche

Professional 
objectID: "eyJpZCI6OX0=" 
... 
status: id: 1 

Und Ich mag eine Suche nur mit denjenigen machen, dem Status = 1. ich das versucht habe:

$searchResult = $this->get('algolia.indexer')->rawSearch(Professional, $data, [ 
      'hitsPerPage' => 10, 
      'page' => 1, 
      'facetFilters' => 'status:1', 
     ]); 

Scheint, dass ich keine FacetFilters korrekt verwenden, Hilfe? Danke

+0

Haben Sie das Attribut 'Status' als attributeForFaceting (https://www.algolia.com/doc/guides/search/filtering-faceting/#prerequisite) gesetzt? –

+0

@ JanPetr Ja, ich habe. –

Antwort

1

Von was ich sehen kann, haben Sie Unter-Attribut id innerhalb der status Attribut. Ihr Eintrag sieht also ungefähr so ​​aus:

{ 
    "objectID": "eyJpZCI6OX0=", 
    ... 
    "status": { 
    "id": 1 
    } 
} 

Korrekt?

In diesem Fall müssen Sie auch das Unterattribut in Ihrem facetFilters angeben. In Ihrem Fall würde es so aussehen:

$searchResult = $this->get('algolia.indexer')->rawSearch(Professional, $data, [ 
    'hitsPerPage' => 10, 
    'page' => 1, 
    'facetFilters' => 'status.id:1', 
]); 

Wenn Sie Algolia PHP API client verwenden, würde der Code wie folgt aussehen:

$client = new \AlgoliaSearch\Client('foo', 'bar'); 
$index = $client->initIndex('index_name'); 

$res = $index->search('', ['filters' => 'status.id:1']); 

Sie auch facetFilters Parameter durch filters Parameter ersetzen kann, die stärker ist und ermöglicht es Ihnen, komplexere Bedingungen anzugeben.