【问题标题】:ElasticSearch how best to prioritise results based on integer / keywordElasticSearch 如何最好地根据整数/关键字对结果进行优先级排序
【发布时间】:2019-10-21 22:13:11
【问题描述】:

我们有一个我想搜索的氯丁橡胶产品目录。我对如何按厚度进行搜索很感兴趣。产品名称将包含厚度以及包含上限值的厚度字段,即thickness:6mm

名称:Rip Curl 6/5/4mm 潜水服

名称:Rip Curl 3mm

各自的厚度属性

厚度:6mm

厚度:3mm

当搜索 3mm 时,我想优先考虑与 3mm 完全匹配的所有结果,在 4/3mm 和 5/4/3mm 等之前。

然后当搜索 4/3mm 时,我想优先考虑 4/3mm、5/4/3mm 和 3mm。

用户可以搜索这些术语中的任何一个,注意mm 可能会被排除在外。

5mm wetsuit
6/5/4mm wetsuit
4/5/6mm wetsuit
3 4mm wetsuit
3/4mm wetsuit
3-4mm wetsuit
3/4 wetsuit
3 4 wetsuit

我考虑过对搜索中提供的最大 int 的“厚度”字段进行关键字比较。然后文本搜索其他参数。

此外,我曾考虑使用诸如 [\d\/m-]* 之类的正则表达式解析数据(将仅选择 int 范围)。

我可以在插入之前展开产品数据。 所以我会将每个大小放在一个关键字数组中,但我仍然需要找到最接近的匹配并设置允许的匹配类型的限制。也许使用类似ngram_tokenizer

请有人建议如何最好地实现此功能以及最适合哪些工具?我不是在追随一个例子,只是为了指出正确的方向。

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    快速思考一下:如何实现自己的分析器,以更好地将数据拆分为术语? 如果您可以将“6/5/4mm”(或“6 5 4mm”或“6-5-4mm”)存储为三个术语:6mm、5mm、4mm,那么标准评分机制应该或多或少地为您提供需要。

    【讨论】:

    • 听起来不错。我正在考虑构建一个将 6/5/4mm 提取为 6、5、4 的正则表达式。我不确定如何实现我提到的权重。或者将输入标准化为格式的能力
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    相关资源
    最近更新 更多