Подсказчик завершения использует FST (специальную структуру данных в памяти, построенную во время индекса) для быстрого поиска, поэтому можно влиять на результаты будущих запросов только во время индекса (см. проблема , относящаяся кваш вопрос на GitHub).
В вашем случае вы можете добавить context
для вашего подсказчика.Например, это может быть поле category
, которое будет содержать особенности конкретного разработчика программного обеспечения.Такие функции должны быть каким-то образом извлечены из данных, которые будут индексироваться:
PUT jobs/_doc/1
{
"suggest": "Software Developer and Analyst - iOS, iPad, . Net",
"category": ["apple", "ios", "ipad", "dotnet"]
}
И во время запроса вы должны попытаться извлечь эти функции из пользовательского ввода перед отправкой его в ES.Например, если пользователь вводит «старший разработчик программного обеспечения java», вы преобразуете эти входные данные в запрос
POST jobs/_search
{
"suggest": {
"jobs_suggestion" : {
"prefix" : "java senior software developer",
"completion" : {
"field" : "suggest",
"size": 10,
"contexts": {
"category_context": [ "java", "senior" ]
}
}
}
}
}
Конечно, этот подход требует сложного предварительного анализа данных индекса и поисковых запросов.
Другим вариантом является присвоение весов названиям должностей во время индексации, но, на мой взгляд, оно не подходит для вашего случая.