在Algolia索引中,我们可以将记录的“state”属性视为字段,并对其进行排序。以下是一个示例,它使用Algolia Instant Search JavaScript库并将搜索结果按状态字段排序:
// 初始化Algolia搜索
var search = instantsearch({
appId: 'YOUR_APP_ID',
apiKey: 'YOUR_API_KEY',
indexName: 'YOUR_INDEX_NAME'
});
// 定义默认排序顺序
var defaultSort = {
direction: 'asc',
// 在 states 上按字母顺序排序
// 如果您想以不同的方式排序(例如“Live”排在最后一个),请更改该数组。
states: ['draft', 'live', 'published']
};
// 创建Algolia索引小部件
search.addWidget(
instantsearch.widgets.hits({
container: '#hits-container',
templates: {
item: '{{title}} - {{state}}'
},
// 配置排序选项
sortBy: [
{value: defaultSort.states.join(), label: '按状态排序'}
],
// 定义默认排序选项
// 如果您想使用其他值进行默认排序(例如“published”),请更改该负载。
routing: {
stateMapping: {
q: 'search',
index: 'index',
sort: function(sortBy) {
return sortBy === defaultSort.states.join(',') ? 'state' : sortBy;
}
}
}
})
);
// 启动Algolia搜索
search.start();