elasticsearch:明显的令牌匹配

时间:2014-08-04 12:31:37

标签: search lucene elasticsearch

tl; dr:我想要一个匹配每个令牌最多一次的查询

鉴于我的弹性搜索索引包含以下词语:

["stackoverflow", "overflow", "awesome", "some"]

是否存在匹配的弹性搜索查询 句子“ stackoverflow 社区很棒”上的"stackoverflow""awesome""overflow""some"不匹配?

我不能只用分数来做,因为还包括拼写错误检测。

我正在寻找的东西就像是消费匹配。不幸的是,到目前为止我找不到合适的东西:(

谢谢!


更多详情:

索引文档看起来像这样

{"name": "stackoverflow",
 "type": "brand"},
{"name": "awesome",
 "type": "descriptor"},
{"name": "overflow",
 "type": "brand"},
{"name": "some",
 "type": "descriptor"}

我的查询如下:

{
  "min_score": 1,
  "query": {
    "match": {
      "name": {
        "query": "stakoverflow community is awesom",
        "fuzziness": 2
      }
    }
  },
  "rescore": {
    "window_size": 10,
    "query": {
      "rescore_query": {
        "match": {
          "name": "stakoverflow community is awesom"
        }
      },
        "query_weight": 0.9,
        "rescore_query_weight": 1.1
    }
  }
}

所以我基本上会尝试在第一个查询中捕捉拼写错误,并且更喜欢重新排列错误拼写错误。

我想要实现的目标:

对于每个令牌,我最多只能有一场比赛:

INPUT  stakoverflow  community   is       awesom
OUTPUT stackoverflow <nothing>  <nothing> awesome

我的问题是,我还会返回溢出某些。溢出甚至可能比令人敬畏的得分更好,因为它不是拼写错误。

0 个答案:

没有答案