elasticsearch 如何通过Elasticsearch识别文本中的品牌,elasticsearch,elasticsearch" /> elasticsearch 如何通过Elasticsearch识别文本中的品牌,elasticsearch,elasticsearch" />

elasticsearch 如何通过Elasticsearch识别文本中的品牌

elasticsearch 如何通过Elasticsearch识别文本中的品牌,elasticsearch,elasticsearch,我已经被困了2天了,我相信这可以用Elasticsearch完成。任何帮助都将不胜感激 我从各种渠道收到产品,我希望将它们整合到我当前的库存中 产品以文本的形式到达我的手中。他们通常有一个品牌和一个名字: 1000 Stories Zinfandel Bourbon Barrel Aged 1000 Stories Gold Rush Red Blend Bourbon Barrel 1000 Stories Cabernet Bourbon Barrel Aged ^^^^^^^^^^^^ ^

我已经被困了2天了,我相信这可以用Elasticsearch完成。任何帮助都将不胜感激

我从各种渠道收到产品,我希望将它们整合到我当前的库存中

产品以文本的形式到达我的手中。他们通常有一个品牌和一个名字:

1000 Stories Zinfandel Bourbon Barrel Aged
1000 Stories Gold Rush Red Blend Bourbon Barrel
1000 Stories Cabernet Bourbon Barrel Aged
^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   Brand              Product Name
但有一种可能是缺失的,也有可能是混合的。这就是为什么我想认识到什么是存在的,什么是缺失的

我通常已经从库存中了解了品牌和产品。如何让Elasticsearch告诉我哪个是什么

理想情况下,我会得到如下结果:

<brand>1000 Stories</brand> <name>Zinfandel Bourbon Barrel Aged</name>
<brand>1000 Stories</brand> <name>Gold Rush Red Blend Bourbon Barrel</name>
<brand>1000 Stories</brand> <name>Cabernet Bourbon Barrel Aged</name>
并使用每个分析器对其进行搜索:

短语\u名称\u建议:{
短语:{
字段:“name.trigram”,
最大误差:0.99,
尺码:5,
克大小:3,
直流发电机:[
{
字段:“name.trigram”,
建议_模式:“始终”
},
{
字段:“name.reverse”,
建议_模式:“始终”,
前置过滤器:“反向”,
post_过滤器:“反向”
}          ],
亮点:{
前标签:“”,
post_标签:“
}
}
},
短语\u名称\u原始\u建议:{
短语:{
字段:“name.raw”,
最大误差:0.99,
尺码:5,
克大小:3,
亮点:{
前标签:“”,
post_标签:“
}
}
}
我只收到了错误术语的随机建议,或者根本没有结果。就像一个品牌的名称,而不仅仅是识别品牌

请注意,如果它缩小了选项范围:名称是手动输入的,因此我可以获得各种文本:缺少名称、拼写(“辛芬德尔”代表“仙芬德尔”)、缩写(“卡本妮苏维翁”代表“卡本妮苏维翁”)、等等。。。这是一个单独的问题,但如果它可以包含在这个解决方案中,我将很乐意接受它


我正在运行Elasticsearch 6.4.2。如果需要,我可以使用更新的版本。

看看@Lupanoide:谢谢,我还没有看过ES ingest API或模块,现在正在看。我仍然希望它可以在没有扩展的情况下开箱即用。对于这个解决方案,你需要一个OpenNLP模型。然后提取实体。命名实体识别。它是一个弹性插件,安装后需要从sourceforge下载NER模型。要下载模型,请在Linux和osx(位于Elasticsearch安装的bin目录中)bin/inset opennlp/download models下运行以下命令