2017-03-16 165 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参数允许您指定更复杂的条件。