elasticsearch - ngram Elasticsearch

标签 elasticsearch elasticsearch-plugin analyzer n-gram

curl -XPUT 'http://localhost:9200/testsoundi' -d '{  "settings": {
  "analysis": {
  "analyzer": {
  "my_edge_ngram_analyzer": {
  "tokenizer": "my_edge_ngram_tokenizer"
  }
  },
  "tokenizer": {
  "my_edge_ngram_tokenizer": {
  "type": "edgeNGram", "min_gram" : "2", "max_gram" : "5",
  "token_chars": ["letter", "digit","whitespace"]
  }
  }
  }
  }
  }'


soundarya@soundarya-VirtualBox:~/Downloads/elasticsearch-2.4.0/bin$ curl 'localhost:9200/testsoundi/_analyze?pretty=1&analyzer=my_edge_ngram_analyzer' -d 'wonder'

但是我得到的输出为wo,won,wond等。如果将max_gram设置为3,则只能得到第三个字母('wo','won')
I am expecting output like:

won 
ond
nde
der

谁能帮我这个?

最佳答案

干得好,您快到了。首先,您需要一个nGram标记程序,而不是edgeNGram。不同之处在于,后者将仅从单词的开头进行标记,而前者将创建所需长度的所有可能的标记,而与单词在内部的位置无关。

其次,如果您需要长度为3的 token ,则min_grammax_gram必须为3。

curl -XPUT 'http://localhost:9200/testsoundi' -d '{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_ngram_analyzer": {
          "tokenizer": "my_ngram_tokenizer"
        }
      },
      "tokenizer": {
        "my_ngram_tokenizer": {
          "type": "nGram",
          "min_gram": "3",
          "max_gram": "3",
          "token_chars": [
            "letter",
            "digit",
            "whitespace"
          ]
        }
      }
    }
  }
}

'

关于elasticsearch - ngram Elasticsearch ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39654503/

相关文章:

elasticsearch - Elasticsearch ShieldPlugin ClassNotFoundException

python - 如何使用python在Elastic Search中索引路径/树?

python-3.x - python3 UnicodeEncodeError : 'charmap' codec can't encode characters in position 95-98: character maps to <undefined>

elasticsearch - 在 Elasticsearch 中,在哪里生成 keystore 并在 readonlyrest 插件中添加身份验证?

c# - 如何在 Azure 搜索中允许自定义分析器使用通配符

docker - 将日志从Docker上的应用程序发送到Elasticsearch

elasticsearch - Elasticsearch处理超标术语

elasticsearch - 如何使用 Elasticsearch 插件定义的过滤器

linux - Nagios Network Analyzer在linux上安装报错

elasticsearch - Elasticsearch多重匹配字段不包含查询字符串