【问题标题】:Elasticsearch searching - span_near query with analyzerElasticsearch 搜索 - 使用分析器的 span_near 查询
【发布时间】:2019-09-05 14:03:46
【问题描述】:

在某些文本字段中搜索单词时,我需要帮助来理解 Elasticsearch 的行为。我有一个文本字段“描述”,其映射如下:

description: {
    type: "text"
    analyzer: "lower_ascii"
    fielddata: true
}

有设置:

lower_ascii: {
    filter: [
        "lowercase",
        "asciifolding"
    ],
    type: "custom"
    tokenizer: "standard"
}

所以它被标准分词器和modifield分词以降低ascii。 如果该字段包含文本,例如'ÁÁÁ XXX YYY ŽŽŽ' 它创建像 'aaa'、'xxx'、'yyy'、'zzz' 之类的标记。 然后,如果我想搜索包含字段中所有单词“aaa zzz”的文档,它不适用于 match 或 match_phase 查询。所以我发现 span_near 查询看起来工作正常,但它没有对搜索值应用 lower_ascii 分析器。 我的查询看起来像:

'query': {
        'span_near': {
            'clauses': {
                {'span_term': {'description' => 'aaa'}},
                {'span_term': {'description' => 'zzz'}}
            },
            "slop": 50,
            "in_order": FALSE
        }
    }

这可以按我的需要工作(如果我理解的话)但是如果我尝试搜索“ÁÁÁ ŽŽŽ”,结果是空的(aaa zzz 效果很好)。有没有办法在查询中设置 lower_ascii 分析器,或者有没有更好的方法以更好的方式做到这一点? 谢谢。

【问题讨论】:

    标签: elasticsearch search


    【解决方案1】:

    看起来match_phrase 查询是您可能想要使用的查询。它支持可配置的斜率。

    {
      "query":
      { "match_phrase": { "description": { "query": "<query>" , slop: <slop>} } }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-02-15
      • 1970-01-01
      • 1970-01-01
      • 2019-11-10
      • 2023-03-25
      • 2014-02-25
      • 1970-01-01
      • 2016-03-25
      • 1970-01-01
      相关资源
      最近更新 更多