如何在 Angular 6 中将数字过滤器添加到 Algolia ais-instantsearch 组件



我正在使用Algolia的ais-instantsearch组件在Angular中搜索和显示结果。

目前,这是我的代码,

<ais-instantsearch [config]="config">
<ais-hits>
...
</ais-hits>
</ais-instantsearch>

现在我的问题是,如何将数字过滤器添加到此搜索请求中?

例如,我想返回所有带有属性is_simple=1的命中。如何实现?

我知道以下三个选项,具体取决于过滤器应该更改的频率。

1. 在配置小部件中搜索参数

<ais-instantsearch [config]="config">
<ais-configure [searchParameters]="{ filters: 'is_simple=1' }">
</ais-configure>
...
</ais-instantsearch>

您可以动态编辑筛选器,这将导致触发搜索。

来源: https://community.algolia.com/angular-instantsearch/widgets/configure.html

2. 即时搜索小部件中的搜索参数

您可以直接在即时搜索小部件的配置中添加过滤器,如Ajay之前所建议的那样。如果它是永久筛选器,请使用此选项。

资料来源:https://community.algolia.com/angular-instantsearch/widgets/instantsearch.html

3. 即时搜索小部件中的搜索功能

<ais-instantsearch [config]="{
apiKey: 'XXXXXXXXXXXXXXXX',
appId: 'XXXXXXX',
indexName: 'test_index',
searchFunction: searchFunction }" >
...
</ais-instantsearch>

每当触发搜索时,都会调用 searchFunction 钩子,为您提供 AlgoliaSearchHelper。

searchFunction(helper) {
helper.addNumericRefinement('is_simple', '=', '1');
helper.search();
}

确保实际触发搜索。如果要在每次搜索时编辑筛选器,请使用此选项。

资料来源:https://community.algolia.com/angular-instantsearch/widgets/instantsearch.html

您是否尝试过扩展config以包含文档中描述的searchParameters- 但也请注意,建议使用基本filters而不是numericFilters

<ais-instantsearch
[config]="{
apiKey: '6be0576ff61c053d5f9a3225e2a90f76',
appId: 'latency',
indexName: 'instant_search',
searchParameters: {
filters: 'is_simple=1'
}
}"
>
<ais-hits>
...
</ais-hits>
</ais-instantsearch>

最新更新