正如您在下面的代码中看到的,我制作了 2 个自定义小部件,一个用于搜索,一个用于显示结果,但我无法增加返回结果的限制。当页面加载时,它会自动发出请求并检索默认结果而无需查询。
我们有超过 500 多个结果都必须显示在 UI 上,我无法在任何地方修改结果的限制。限制始终为 200。作为后端,我没有使用 algolia,而是使用 meilisearch,但这不会以任何方式影响这一点。
正如您在图像中看到的,searchParamters 已修改并设置为限制 1000,但在发出请求时,它会将其发送为 200。
const search = instantsearch({
indexName: "store",
searchClient: instantMeiliSearch(m_host, m_key),
});
search.addWidgets([
configure({
hitsPerPage: 1000,
limit: 1000,
filters: `image!=null AND is_active=1 AND (countries_ids=${country_id} OR countries_ids=0) AND goto_link != null`,
attributesToHighlight: [],
paginationLimitedTo: 1000,
}),
{
init: function (opts) {
const helper = opts.helper;
const input = document.querySelector('#searchbox');
input.addEventListener('input', function (e) {
helper.setQuery(e.currentTarget.value) // update the parameters
.search(); // launch the query
});
}
},
{
render: function (opts) {
let results = opts.results;
// read the hits from the results and transform them into HTML.
let res = toArray(groupBy(filter_stores(results.hits), 'category_id'));
$(`.stores-list`).empty()
$(`.categories-list`).hide()
res = res.map(it => {
let copy = it;
copy[1] = _.orderBy(it[1].map(store => {
store.default_rank = store.hasOwnProperty(`rank_country_${country_id}`) ? store[`rank_country_${country_id}`] : store.default_rank;
return store;
}), 'default_rank', 'asc');
return copy;
});
res.map(pairs => {
let [category_id, stores] = pairs;
$(`#category_${category_id}`).show()
let html = stores.map(h => create_store(h)).join('')
$(`#store_list_${category_id}`).html(html)
});
},
}
]);
search.start();