Я настроил собственный анализатор в Elasticsearch, который использует токенайзер edge-ngram, и я экспериментирую с фильтрами и char_filters, чтобы усовершенствовать процесс поиска.
Мне указали на отличный инструмент elyser , который позволяет вам тестировать влияние, которое ваш пользовательский анализатор оказывает на определенный термин, но это выдает ошибки, когда я объединяю пользовательский анализатор с char_filter, в частности, html_strip.
Ошибка, которую я получаю отelyser:
invalid_argument_exception ',' reason ':' Пользовательский нормализатор может не использовать фильтр символов [html_strip] '
Я хотел бы знать, является ли это допустимымсообщение об ошибке или является ли это ошибкой в инструменте.
Я ссылался на основную документацию и даже на их custom анализатор пример выдает ошибку в elyser:
PUT my_index
{
"settings": {
"analysis": {
"analyzer": {
"my_custom_analyzer": {
"type": "custom",
"tokenizer": "standard",
"char_filter": [
"html_strip"
],
"filter": [
"lowercase",
"asciifolding"
]
}
}
}
}
}
Команда в elyser:
elyzer --es "http://localhost:9200" --index my_index --analyzer my_custom_analyzer "Trinity Chapel <h1>[in fact King's Chapel]</h1>"
Если окажется, что виноват elyser, может кто-нибудь указать мне альтернативный метод экзаменавводить токены, полученные из моего пользовательского анализатора, чтобы я мог проверить влияние каждого фильтра?
Мои пользовательские анализаторы выглядят так, будто я бросил в них раковину, и я хотел бы получить способтест и рефакторинг:
PUT /objects
{
"settings" : {
"index" : {
"number_of_shards" : "5",
"analysis" : {
"analyzer" : {
"search_autocomplete": {
"type": "custom",
"tokenizer": "standard",
"char_filter" : [
"html_strip"
],
"filter": [
"standard",
"apostrophe",
"lowercase",
"asciifolding",
"english_stop",
"english_stemmer"
]
},
"autocomplete": {
"type": "custom",
"tokenizer": "autocomplete",
"filter": [
"standard",
"lowercase",
"asciifolding",
"english_stop",
"english_stemmer"
]
},
"title_html_strip" : {
"filter" : [
"standard",
"lowercase"
],
"char_filter" : [
"html_strip"
],
"type" : "custom",
"tokenizer" : "standard"
}
},
"tokenizer": {
"autocomplete": {
"type": "edge_ngram",
"min_gram": 3,
"max_gram": 20,
"token_chars": [
"letter",
"digit"
]
}
},
"filter": {
"english_stop": {
"type": "stop",
"stopwords": "_english_"
},
"english_stemmer": {
"type": "stemmer",
"name": "english"
}
}
}
}
}
}