首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否使用InstantSearch.js排除筛选器?

是否使用InstantSearch.js排除筛选器?
EN

Stack Overflow用户
提问于 2017-01-10 03:16:55
回答 1查看 584关注 0票数 0

我们正在使用Algolia来索引来自各种来源和十几种不同产品的内容。现在我有一个索引,product是一个已配置的facet。

我需要找到一种方法,将搜索仅限于用户拥有的那些产品。

我正在使用InstantSearch库,并且我一直在阅读文档和各种在线论坛,以获取有关如何实现此目标的信息。

下面是我正在尝试运行的代码。

代码语言:javascript
复制
var client = algoliasearch("myAppId", "myApiKey")
var index = client.initIndex('myIndex');

var search = instantsearch({
appId: 'myAppId',
apiKey: 'myApiKey',
indexName: 'myIndex',
urlSync: {},
attributesToHighlight: 'full'
});

search.addWidget(
instantsearch.widgets.refinementList({
container: '#products',
attributeName: 'products',
operator: 'or',
limit: 100,
sortBy: ['name:asc'],
templates: {
}
})
);

search.addWidget({
init: function (options) {
    options.helper.addFacetRefinement('products', 'Product A');
}
});

search.start();

但是,当我执行此命令时,我得到一个错误,声明“未捕获错误:产品未在助手配置的facets属性中定义”。

我遗漏了哪一步?或者我是以错误的方式来处理这个问题?

如有任何指导,敬请惠顾。

~ Greg

EN

回答 1

Stack Overflow用户

发布于 2017-01-11 03:40:52

我找到了满足我需求的答案。我必须在即时搜索配置调用中添加一个searchParameters选项。我不得不写一些代码来隐藏我的refinementlist小部件中不需要的产品。

第一步是创建一个我想要隐藏的产品数组。

代码语言:javascript
复制
var productsToExclude = ['product-a','product-b'];

我必须通过"searchParameters“即时搜索配置选项传递要隐藏的项目列表。

代码语言:javascript
复制
var search = instantsearch({
appId: 'myAppId',
apiKey: 'myApiKey',
indexName: 'myIndex',
urlSync: {},
attributesToHighlight: 'full',
searchParameters: { facetsExcludes: { "products": productsToExclude}}
});

我还必须编写一些代码来隐藏refinementList小部件中的项。

代码语言:javascript
复制
var onRenderHandler = function () {
for (var p in productsToExclude) {
$("input[type=checkbox][value='" + productsToExclude[p] + "']").parent().hide();
}
};
search.on('render', onRenderHandler);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41555290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档