Elasticsearch文本匹配百分比

时间:2017-09-07 10:17:30

标签: elasticsearch matching

我有一个带有已保存电影标题的Elasticsearch数据库。

我想要实现的是从这个数据库中选择最接近的匹配,看看我是否已经有类似的标题。 目前我正在使用phrase_matching和单词匹配的组合来尝试实现这一目标。我挣扎的是以下几点:

在数据库中: 它来到了夜晚

搜索: 它

这显然会匹配slop参数,并将100%的单词与数据库中的单词匹配... 但我想要的是这个搜索失败,因为我的搜索只包含elasticsearch中整个句子的25%。 (几乎像一个反向匹配)。

原因是'它'并且'它来自夜晚'实际上是2个不同的标题,在进行此搜索时可能已经/可能没有被编入索引。

我不仅仅使用条款查询的原因是: 银河守护者2,The VS 银河守护者2 VS 银河守护者第2卷

有没有人知道这是否可以在Elasticsearch中实现?

2 个答案:

答案 0 :(得分:1)

目前我已经使用了以下各项的组合:

  • 匹配查询以及minimum_should_match以检查需要匹配的字词数量
  • MatchPhrase使用slop
  • 检查匹配单词的位置和一些余量
  • 一个自定义脚本,用于检查doc [' _source'] [' field']。value.length属性以检查它是否在某些字符长度之间

这给了我期待的东西。

答案 1 :(得分:1)

您是否尝试过尝试配置字段的相似性?我认为将更传统的统计方法与一些木瓦提升相结合可以为您提供更强大的解决方案。您可以按分数过滤以限制结果集。

请参阅:https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-similarity.html