我使用Algolia instantsearch.js为我的网站的搜索.
设置过程相当简单直接,包括.js和.css文件,创建模板,然后再创建一个.js文件,其中app()包含设置我的应用程序(appId,apiKey,indexName)和小部件的功能.
我需要的是每次搜索功能运行时执行的功能,最好是在显示命中后立即执行.
也许有一个小部件呢?
谢谢!
所以我已经在我的应用程序中成功实现了React InstantSearch库,并尝试将过滤器应用于细化列表(以确保显示的过滤器与活动用户相关,并隐藏不存在的过滤器).我试过以下:
<RefinementList attributeName="organization" transformItems={items => items.filter(e => refineList.indexOf(e)>=0)} />
Run Code Online (Sandbox Code Playgroud)
其中refineList是一个简单的字符串数组(即["A","B","C"])
但是,RefinementList会一直显示所有过滤器选项,而不会应用"transformItems"函数.是不是我误解了"transformItems"是如何工作的?
关于这个主题的文档很少,所以我相信它对图书馆的许多其他用户都有帮助.
问题如下.我们使用algolia instantsearch.每个产品都有卖家.当前用户订阅了一些卖家.用户应该有可能通过订阅的卖家和那些没有订阅的卖家来过滤产品.为此,我尝试使用小部件切换.在那里我为当前用户设置的子列表卖家列表,用逗号分隔为开关选项
values: {
on: '37,41,67',
off: '45,56',
},
Run Code Online (Sandbox Code Playgroud)
但只有在我只指定一个卖家时它才有用.并且完成默认选项.我试过使用numericRefinementList小部件
options: [
{ label: 'On', value: '37,41,67' },
{ label: 'Off', value: '45,56' },
],
Run Code Online (Sandbox Code Playgroud)
但它不起作用也可以有人提出解决方案吗?
目前正在使用Algolia通过其instantSearch.js提供的无限搜索方法.
发生以下情况:
从它的外观来看 - 它将新细化的结果附加到已经存在的结果中.我想让它反感结果,不确定这是否是即时搜索本身的错误?
search.addWidget(
instantsearch.widgets.numericRefinementList({
container: '#price',
attributeName: 'salePrice',
options: [
{name: 'All'},
{end: 20, name: 'less than 20'},
{end: 50, name: 'less than 50'},
{start: 50, end: 100, name: 'between 50 and 100'},
{start: 100, end: 300, name: 'Expensive'},
{start: 300, name: 'Very Expensive'}
],
templates: {
header: 'Price'
}
})
);
Run Code Online (Sandbox Code Playgroud)
而无限的搜索代码:
search.addWidget(
instantsearch.widgets.infiniteHits({
container: '#infinite-hits-container',
templates: {
empty: 'No results',
item: hitTemplate
},
hitsPerPage: 3
})
);
Run Code Online (Sandbox Code Playgroud)