【问题标题】:String tokenizer filter like Shingle in Elasticsearch字符串标记器过滤器,如 Elasticsearch 中的 Shingle
【发布时间】:2020-05-10 20:07:44
【问题描述】:

我正在一个购物电子商务网站上工作,该网站要求从产品名称生成有意义的字符串标记以实现自动完成功能。例如:

如果产品名称是:“红色绿柱石条纹棉衬衫”

那么表示完整的标记可以是“红衬衫”、“棉衬衫”、“条纹棉衬衫”和“绿柱石衬衫”。

我曾尝试通过 elasticsearch 的 “Shingle”过滤器 生成令牌,但无法生成“Red Shirt”令牌,因为产品名称中没有继续使用术语“Red”和“Shirt”。 p>

任何帮助都会非常有用。

提前致谢。

【问题讨论】:

  • 你知道search_as_you_typeelastic中的类型吗?
  • 是的 Nate,我使用的是 Suggester 而不是 search_as_you_type。那里一切正常,但我的问题是从产品标题生成有意义的令牌。就像我提到的,如果产品图块是Red Beryl Striped Cotton Shirt,那么Shingle 过滤器只为兄弟词生成标记,而不是为Red + Shirt 一起生成标记。感谢您的回复。任何建议都会受到欢迎。 :)

标签: string elasticsearch text nlp tokenize


【解决方案1】:

您所描述的是match_phrase query 中的slop。尽管对于该示例查询,您需要 3 的斜率,这可能很昂贵。

一般来说,我认为你会想要一个带有 should 子句的 boolean query

  • 搜索输入中的每个标记。
  • 对完整搜索输入的词组搜索(可能有一个slop)。

对于自动补全 search_as_you_type 最有意义,正如 Nate 提到的,但对于那个例子,它不会自动补全到“红衬衫”。

【讨论】:

  • 是的,没错,Xeraa。我目前正在使用弹性搜索的Suggester 进行自动完成,并且在那里运行良好。这里唯一的问题是生成具有一些有意义文本的令牌,并且该令牌将存储在我的弹性搜索索引的complete 字段中。顺便说一句,感谢您的回复。欢迎任何其他建议。 :)
猜你喜欢
  • 2017-05-09
  • 1970-01-01
  • 2023-03-20
  • 2020-02-01
  • 1970-01-01
  • 2016-03-02
  • 1970-01-01
  • 2016-03-04
  • 1970-01-01
相关资源
最近更新 更多