2017-03-16 27 views
0

私はAlgoliaエンジンにAlgolia条件検索

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

次の「実体」を持っていると私はちょうどステータスが1 私はこれを試してみた=持っているもので検索をしたい:

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

facetFiltersを正しく使用しているようですが、 助けてください。 ありがとう

+0

'status'属性をattributeForFaceting(https://www.algolia.com/doc/guides/search/filtering-faceting/#prerequisite)に設定しましたか? –

+0

@JanPetrはい、あります。 –

答えて

1

投稿者idstatus属性内にあります。あなたのレコードは次のようになります:

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

正しいですか?

この場合、facetFiltersにサブ属性を指定する必要があります。あなたのケースでは、それは次のようになります。

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

あなたがAlgolia PHP API clientを使用する場合、コードは次のようになります。

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

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

また、より強力であるfiltersパラメータでfacetFiltersパラメータを置き換えることができますし、より複雑な条件を指定することができます。