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_gram
和max_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/