Я попытался применить собственный анализатор английского языка, а также стандартный анализатор английского языка вasticsearch. Моя цель особенно использовать стемминг. Допустим, в моих документах есть следующие слова: обложки, впечатление.
Теперь, если я ищу, например, Обложка или впечатления или впечатления, я получаю 0 результатов. Только если я буду искать точные термины «обложки» или «показ», я попаду в результаты.
Это мои настройки вasticsearch (согласно этой документации https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-lang-analyzer.html):
{
"settings": {
"analysis": {
"filter": {
"english_stop": {
"type": "stop",
"stopwords": "_english_"
},
"english_stemmer": {
"type": "stemmer",
"language": "english"
},
"english_possessive_stemmer": {
"type": "stemmer",
"language": "possessive_english"
}
},
"analyzer": {
"rebuilt_english": {
"tokenizer": "standard",
"filter": [
"english_possessive_stemmer",
"lowercase",
"english_stop",
"english_stemmer"
]
}
}
}
}
}
Мое отображение выглядит следующим образом:
"mapping": {
"_doc": {
"properties": {
"title": {"type": "text",
"analyzer": "rebuilt_english"},
"description: {"type": text"
"analyzer": "rebuilt_english"}
}
}
}
Я также пытался (в соответствии с несколькими разными учебниками) изменить настройки следующим образом (я просто добавляю изменения здесь, а не полный код снова):
{
"settings": {
"analysis": {
"analyzer: "rebuilt_english" {
"type": "custom",
"filter": #and so on...
Мне что-то здесь не хватает? Насколько я понимаю, мне нужно установить настройки для конкретного анализатора в «настройках», дать ему имя и затем использовать это имя в свойствах «отображения», чтобы каждый элемент анализировался в соответствии с настройками, установленными выше.
Я также пытался не устанавливать какие-либо конкретные настройки, а просто установить свойства анализатора (в сопоставлении) для каждого элемента, например:
"title": {"type": "text",
"analyzer": "english"}
Что также не работает (даже при использовании фильтров, таких как stemming).
Я действительно часами пытался найти решение, но не могу заставить его работать. Помощь будет высоко ценится. Спасибо!
UPDATE
Это код, который я использовал для создания индекса (моя последняя попытка, согласно моему описанию, я также пробовал другие способы применения метода):
PUT /my_index
{
"settings": {
"analysis": {
"analyzer": {
"rebuilt_english": {
"type": "custom",
"filter": {
"english_stop": {
"type": "stop",
"stopwords": "_english"
},
"english_stemmer": {
"type": "stemmer",
"language": "english"
},
"english_possessive_stemmer": {
"type": "stemmer",
"language": "possessive_english"
},
"tokenizer": "standard",
"filter": [
"english_possessive_stemmer",
"lowercase",
"english_stop",
"english_stemmer"
]
}
}
}
},
"mappings": {
"_doc": {
"properties": {
"title": { "type": "text",
"analyzer": "rebuilt_english"
},
"description": { "type": "text",
"analyzer": "rebuilt_english"}
}
}
}
}
}