Algolia instantsearch.js : 如何以随机顺序显示结果?
Algolia instantsearch.js : how to display the results with a random order?
我正在使用 Algolia instantsearch.js 来显示参加选举的候选人(此处:https://laprimaire.org/candidats/)。我希望候选人的初始显示是随机的,以便每个候选人或多或少获得相同的知名度。
我在这个答案中读到,它不是 Algolia 的一个特性,但它应该可以通过一些 js 技巧来实现:
问题是我正在使用 instantsearch.js,但我找不到如何在 instantsearch.js.
的情况下实现上述搜索功能
我从文档中看到可以使用 searchFunction 初始化 instantsearch,该 searchFunction 接收一个助手作为参数:
https://community.algolia.com/instantsearch.js/documentation/#initialization
但是它没有找到关于这个助手以及如何操作它的文档,所以我可以将随机函数应用于搜索结果。
如有任何帮助,我们将不胜感激!
非常感谢
蒂博
点击小工具可以让您更好地控制如何通过 transformData.allItems
and templates.allItems
parameters 显示点击列表。
使用本题的shuffle
方法How can I shuffle an array?:
function shuffle (o){
for(var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
return o;
}
你可以简单地做:
search.addWidget(
instantsearch.widgets.hits({
// Your other options
transformData: {
allItems: function (content) {
return { hits: shuffle(content.hits) };
}
},
templates: {
empty: 'No results',
allItems: '{{#hits}}<your previous templates.hit value>{{/hits}}'
}
})
);
{{#hits}}{{/hits}}
模板只是一些 Hogan.js
逻辑,用于循环您的每次点击。
我正在使用 Algolia instantsearch.js 来显示参加选举的候选人(此处:https://laprimaire.org/candidats/)。我希望候选人的初始显示是随机的,以便每个候选人或多或少获得相同的知名度。
我在这个答案中读到,它不是 Algolia 的一个特性,但它应该可以通过一些 js 技巧来实现:
问题是我正在使用 instantsearch.js,但我找不到如何在 instantsearch.js.
的情况下实现上述搜索功能我从文档中看到可以使用 searchFunction 初始化 instantsearch,该 searchFunction 接收一个助手作为参数: https://community.algolia.com/instantsearch.js/documentation/#initialization
但是它没有找到关于这个助手以及如何操作它的文档,所以我可以将随机函数应用于搜索结果。
如有任何帮助,我们将不胜感激! 非常感谢
蒂博
点击小工具可以让您更好地控制如何通过 transformData.allItems
and templates.allItems
parameters 显示点击列表。
使用本题的shuffle
方法How can I shuffle an array?:
function shuffle (o){ for(var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x); return o; }
你可以简单地做:
search.addWidget(
instantsearch.widgets.hits({
// Your other options
transformData: {
allItems: function (content) {
return { hits: shuffle(content.hits) };
}
},
templates: {
empty: 'No results',
allItems: '{{#hits}}<your previous templates.hit value>{{/hits}}'
}
})
);
{{#hits}}{{/hits}}
模板只是一些 Hogan.js
逻辑,用于循环您的每次点击。