Elasticsearch – мощная поисковая система с открытым исходным кодом, обеспечивающая эффективные возможности полнотекстового поиска. При работе с Elasticsearch важно оптимизировать результаты поиска, чтобы гарантировать, что наиболее релевантные документы будут возвращены пользователям. Один из эффективных способов добиться этого — использовать методы повышения запросов. В этой статье мы рассмотрим несколько методов улучшения результатов поиска в Elasticsearch с примерами кода.
- Усиление терминов:
Бустинг терминов позволяет повысить показатель релевантности определенных терминов в поисковом запросе. Этого можно добиться, используя символ ^, за которым следует коэффициент повышения. Вот пример:
GET /my_index/_search
{
"query": {
"match": {
"content": {
"query": "elasticsearch boost",
"boost": 2
}
}
}
}
В этом примере термин «elasticsearch» будет иметь вдвое большую релевантность в результатах поиска, чем термин «boost».
- Усиление поля:
Увеличение полей позволяет назначать разные веса определенным полям в документе. Поля с более высоким повышением будут вносить больший вклад в общий показатель релевантности. Вот пример:
GET /my_index/_search
{
"query": {
"multi_match": {
"query": "open source",
"fields": ["title^3", "content"]
}
}
}
В этом примере поле «заголовок» имеет коэффициент значимости 3, что делает его более важным, чем поле «содержание» при расчете показателя релевантности.
- Запрос оценки функции:
Запрос оценки функции предоставляет гибкий способ изменения оценки релевантности документов на основе пользовательских функций. Это позволяет вам использовать сложные алгоритмы ранжирования или динамически применять повышения. Вот пример:
GET /my_index/_search
{
"query": {
"function_score": {
"query": {
"match": {
"content": "elasticsearch boost"
}
},
"functions": [
{
"filter": { "match": { "category": "technology" } },
"weight": 2
}
],
"boost_mode": "multiply"
}
}
}
В этом примере показатель релевантности документов, соответствующих термину «elasticsearch boost», будет умножен на 2, если они также соответствуют категории «технологии».
- Повышение по давности:
Повышение уровня последних документов может быть полезно в сценариях, где актуальность является важным фактором. Для этого Elasticsearch предоставляет функцию decay. Вот пример:
GET /my_index/_search
{
"query": {
"function_score": {
"query": {
"match": {
"content": "elasticsearch boost"
}
},
"functions": [
{
"gauss": {
"created_at": {
"origin": "now",
"scale": "7d",
"offset": "1d",
"decay": 0.5
}
}
}
],
"boost_mode": "multiply"
}
}
}
В этом примере документы с более поздней датой создания «create_at» получат более высокий показатель релевантности. Функция decayпостепенно снижает усиление по мере старения документов.
Повышение результатов поиска в Elasticsearch имеет решающее значение для повышения релевантности извлекаемых документов. В этой статье мы рассмотрели несколько методов, включая повышение терминов, повышение значений полей, запросы оценки функций и повышение по давности. Внедрив эти методы, вы сможете точнее настроить поисковые запросы и повысить удобство работы пользователей.