使用ngram在文本中搜索搜索模式及以上的最小字符

时间:2016-12-06 12:14:12

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

我的弹性服务器中有一个文本索引。 我已经实现了这样的ngram tokenizer:

"analysis": {
      "analyzer": {
        "ngram_analyzer": {
          "type": "custom",
          "tokenizer": "ngram_tokenizer"
        }
      },
      "tokenizer": {
        "ngram_tokenizer": {
          "type": "ngram",
          "min_gram": "3",
          "max_gram": "7"
        }
      }
    },

让我说我的数据是

"你好美丽的世界"

当我发出一个查询匹配" Hell" 我希望它只找到我的第一个单词(Hello),而不是单词ell,所以太过分了,我不想要它" break"我的搜索模式只是为了在我的数据中找到它(有4个字符而不是下面)

谢谢

1 个答案:

答案 0 :(得分:1)

解决方案是更改分析仪中的标记器。

例如你可以像

那样做
"some_analyzer": {
    "type": "custom",
    "tokenizer": "whitespace",
    "filter": [ "lowercase" ]
  }

重要的是,您的搜索分析器没有nGram tokenizer。