使用ngram和空白分析器突出显示部分单词

时间:2016-12-08 10:12:31

标签: elasticsearch n-gram elasticsearch-net elasticsearch-5

我有一个包含以下数据的弹性搜索索引:

" A-Team" (作为例子)

我的索引设置为:

"index": {
    "number_of_shards": "1",
    "provided_name": "tyh.tochniyot",
    "creation_date": "1481039136127",
    "analysis": {
      "analyzer": {
        "whitespace_analyzer": {
          "type": "whitespace"
        },
        "ngram_analyzer": {
          "type": "custom",
          "tokenizer": "ngram_tokenizer"
        }
      },
      "tokenizer": {
        "ngram_tokenizer": {
          "type": "ngram",
          "min_gram": "3",
          "max_gram": "7"
        }
      }
    },

当我搜索:

_search
{
"from": 0,
"size": 20,
"track_scores": true,
"highlight": {
  "fields": {
    "*": {
      "fragment_size": 100,
      "number_of_fragments": 10,
      "require_field_match": false
    }
  }
},
"query": {
  "match": {
    "_all": {
      "query": "Tea"
    }
  }
}

我希望得到重点结果:

    "highlight": {
      "field": [
        "The A-<em>Tea</em>m"
      ]
}

但我根本没有任何亮点。

我使用空格进行搜索和使用ngram进行索引的原因是我不希望在搜索阶段打破我正在搜索的单词,就像我正在搜索&#34; Team&#34;它会找到我&#34;茶&#34;,&#34; eam&#34;,&#34;团队&#34;

谢谢

1 个答案:

答案 0 :(得分:0)

问题是我的Analyzer和搜索分析器在_all字段上运行。 当我在特定字段上放置Analyzer属性时,突出显示开始工作。