Я пробовал оба, и они, кажется, дают одинаковые результаты при тестировании анализаторов
settings: {
analysis: {
filter: {
ngram_filter: {
type: "ngram",
min_gram: 2,
max_gram: 20
}
},
tokenizer: {
ngram_tokenizer: {
type: "ngram",
min_gram: 2,
max_gram: 20
}
},
analyzer: {
index_ngram: {
type: "custom",
tokenizer: "keyword",
filter: [ "ngram_filter", "lowercase" ]
},
index_ngram2: {
type: "custom",
tokenizer: "ngram_tokenizer",
filter: [ "lowercase" ]
},
},
}
}
Я получаю одинаковые результаты, выполняя:
curl -X GET "localhost:9200/my_index/_analyze?pretty" -H 'Content-Type: application/json' -d'
{
"analyzer": "index_ngram",
"text": "P&G 40-Bh"
}
'
и
curl -X GET "localhost:9200/my_index/_analyze?pretty" -H 'Content-Type: application/json' -d'
{
"analyzer": "index_ngram2",
"text": "P&G 40-Bh"
}
'
Какой я должен использовать? Есть ли разница в производительности? Похоже, что они просто выполняют операции в другом порядке, но я не уверен, какой из них более производительный или что лучше.