gpt4 book ai didi

Algolia 即时搜索 : custom sort refinementlist

转载 作者:行者123 更新时间:2023-12-04 13:59:44 26 4
gpt4 key购买 nike

在我们的项目中,我们有几个细化列表,它们运行正常。但是,它们是默认排序,计算字母数字,正在应用。在我们的情况下,我的每个细化列表项都有一个“等级”属性,但我无法访问它,因为 API 正在控制返回的内容。

根据documentation似乎只有三种排序选择。

有没有办法解决这个问题?

例如,此代码产生以下结果。

search.addWidget(
instantsearch.widgets.refinementList({
container: '#outsideDiameter',
attributeName: 'outsideDiameter.description',
operator: 'or',
sortBy: ["name:asc"],
limit: 5,
showMore: true,
templates: {
header: getHeader('Outside Diameter'),
},
})
);

enter image description here

我希望列表项按小数值升序排序。换句话说:3/16", 1/4", 5/16", ..., 4.5mm, 6.0mm, etc... 每个值都有我之前提到的“等级”属性。

那可能吗?

最佳答案

对于更高级的排序,有几个选项:

  • 使用 renderingContent.facetOrdering 进行手动分面排序参数:https://www.algolia.com/doc/api-reference/api-parameters/renderingContent/

  • index.setSettings({
    renderingContent: {
    facetOrdering: {
    values: {
    size: {
    order: ['1/3"', '1/2"', '17m'],
    sortRemainingBy: 'hidden',
    },
    },
    },
    },
    });
  • 将所有单位转换为公制(或其他正确排序的单位)并将其作为前缀添加到您的记录中:

  • {
    "size": "0015mm - 1/2\""
    }
    完成此操作后,按字母顺序排序将具有升序。对于显示,您可以使用以下方法删除前导零:
    refinementList({
    transformItems(items) {
    return items.map((item) => ({
    ...item,
    label: item.label.replace(/^0+/, ''),
    }));
    },
    });
  • 使用 transformItems 排序

  • 在 transformItems 中,您可以做任何您想做的事情,例如先转换单位,然后按新属性排序:
    refinementList({
    transformItems(items) {
    return items
    .map((item) => ({ ...item, mm: convertToMm(item.label) }))
    .sort((a, b) => b.mm - a.mm);
    },
    });

    关于Algolia 即时搜索 : custom sort refinementlist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52209832/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com