В настоящее время я использую поиск эластичных изображений и имею несколько типов запросов, среди которых я использую запрос match_phrase. В индексе, который я использую это, используется английский анализатор для текстовых сообщений. Когда я ищу фразы, я ожидаю точных результатов, но если в моем поисковом термине есть английское слово - например remove, он также отмечает такие слова, как «удаленный», «удаление» «удаляет».Поиск по фразе в ElasticSearch с помощью анализатора английского языка
Как предотвратить это с помощью моей фразы? Есть ли лучший вариант, кроме match_phrase для запросов, подобных этому?
Возможно ли это без изменения анализатора? Ниже мой запрос (структурированы таким образом, что он может сделать другие вещи):
query: {
fields : ['_id', 'ownerId'],
from: 0,
size: 20,
query: {
filtered: {
filter: {
and: [group ids]
},
query: {
bool: {
must: {
match_phrase: {
text: "remove"
}
}
}
}
}
}
}
А вот мой индекс:
[MappingTypes.MESSAGE]: {
properties: {
text: {
type: 'string',
index: 'analyzed',
analyzer: 'english',
term_vector: 'with_positions_offsets'
},
ownerId: {
type: 'string',
index: 'not_analyzed',
store: true
},
groupId: {
type: 'string',
index: 'not_analyzed',
store: true
},
itemId: {
type: 'string',
index: 'not_analyzed',
store: true
},
createdAt: {
type: 'date'
},
editedAt: {
type: 'date'
},
type: {
type: 'string',
index: 'not_analyzed'
}
}
}
Почему вы не можете просто сбросить английский анализатор в этом случае? – ChintanShah25
Можно ли контролировать, какой анализатор используется только из запроса? Я пытаюсь сделать что-то вроде настройки «анализатора» на ключевое слово, но он просто терпит неудачу. С другой стороны, я также использую ES 1.5. –
Мне удалось использовать ключевое слово - но мне нужно, чтобы мои данные были проиндексированы как ключевое слово, чтобы это действительно работало? Как бы то ни было, я не получаю никаких результатов. –