【发布时间】: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