2017-03-16 148 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

從我所看到的你的子屬性id裏面的status屬性。所以你的記錄看起來像這樣:

{ 
    "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參數允許您指定更復雜的條件。