Я делаю профессиональное социальное приложение с помощью чата.Я хочу предложить пользователям добавить в друзья.Предложения основаны только на названии: разработчик, архитектор, певец ...
Текущий эластичный запрос слишком избирателен, поэтому у меня нет предложений:
query: {
bool: {
must_not: {
ids: {
values: _usersToIgnore
}
},
should: [
{
match: {
titlePhrase: {
query: title,
minimum_should_match: '90%',
boost: 2
}
}
}
],
minimum_should_match: 1
}
}
Я пытался снизить imum_should_match но это ничего не меняет, я полагаю, что эластик соответствует словам, а не буквам.
Эластичное отображение:
titlePhrase: {
type: 'text',
analyzer: 'phrase_analyzer',
search_analyzer: 'phrase_analyzer'
}
(я не знаючто-нибудь об анализаторах, и это не я сделал это отображение)
В большинстве моих случаев заголовки - это всего лишь одно слово.Таким образом, Elastic находит:
других пользователей, которые разделяют одно и то же название (например, разработчик)
пользователей, которые разделяют одно слово (например, веб)разработчик, разработчик ios)
, но он не находит никакого соответствия между:
Знаете ли вы, как я могу увеличить допуск эластичности, пожалуйста?Я могу поиграть с нечеткими запросами, но это кажется хакерским.