Algolia的disjunctiveFacets可用于将多个facet filter组合在一起,以提供更准确的搜索结果。routing则可用于指定搜索结果的集合,使用户能够快速访问其搜索内容。
将两者结合使用时,需要首先在Algolia索引中定义routing。例如,可以使用以下代码示例:
index.setSettings({
attributesForFaceting: ['category', 'brand', 'price'],
routing: {
stateToRoute: {
'facetFilters': {
'category': ['electronics']
},
'page': 1,
'query': 'phone'
},
routeToState: function(route) {
return {
'facetFilters': {
'category': [route.category]
},
'page': 1,
'query': route.query
};
}
}
});
上述代码定义了一个包含category、brand和price三个facet filter的索引,并配置了一个名为routing的对象。其中,stateToRoute属性定义了一个默认路由,将搜索分类为电子产品,并指定预设页码和查询词。routeToState属性则定义了一个将路由转换为搜索状态的函数。
接下来,可以使用disjunctiveFacets来在搜索结果中组合多个facet filter。例如,可以使用以下代码:
search.addDisjunctiveFacet('brand');
search.addDisjunctiveFacet('price');
search.search('phone', function(err, content) {
console.log(content.facetResults);
});
上述代码将品牌和价格两个facet filter添加到搜索中,并搜索包含“phone”关键字的结果。结果将包括根据搜索结果计算得出的品牌和价格facet filter。
通过结合使用disjunctiveFacets和routing,您可以为用户提供更具针对性的搜索结果,实现更高效的搜索体验。