ElasticSearch如何最好地根据整数/关键字对结果进行优先级排序

时间:2019-06-06 11:37:31

标签: elasticsearch

我们有一个我要搜索的氯丁橡胶产品目录。我对如何实现按厚度搜索很感兴趣。产品名称将包含厚度以及包含最大值的厚度字段,即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

之类的东西

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

1 个答案:

答案 0 :(得分:0)

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