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

Searching within a text using ngram for the minimum chars of the search pattern and above

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

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

假设我的数据是

"Hello beautiful world ell"

当我进行查询匹配时 "Hell" 我希望它只找到我的第一个词 (Hello) 而不是 ell 这个词,所以基本上我不希望它 "break" 我的搜索模式只是为了在我的数据中按原样找到它(有 4 个字符而不是下)

谢谢

解决方案是更改分析器中的分词器。

例如,您可以这样做

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

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