Повышение результатов поиска в Elasticsearch: подробное руководство

Elasticsearch – мощная поисковая система с открытым исходным кодом, обеспечивающая эффективные возможности полнотекстового поиска. При работе с Elasticsearch важно оптимизировать результаты поиска, чтобы гарантировать, что наиболее релевантные документы будут возвращены пользователям. Один из эффективных способов добиться этого — использовать методы повышения запросов. В этой статье мы рассмотрим несколько методов улучшения результатов поиска в Elasticsearch с примерами кода.

  1. Усиление терминов:

Бустинг терминов позволяет повысить показатель релевантности определенных терминов в поисковом запросе. Этого можно добиться, используя символ ^, за которым следует коэффициент повышения. Вот пример:

GET /my_index/_search
{
  "query": {
    "match": {
      "content": {
        "query": "elasticsearch boost",
        "boost": 2
      }
    }
  }
}

В этом примере термин «elasticsearch» будет иметь вдвое большую релевантность в результатах поиска, чем термин «boost».

  1. Усиление поля:

Увеличение полей позволяет назначать разные веса определенным полям в документе. Поля с более высоким повышением будут вносить больший вклад в общий показатель релевантности. Вот пример:

GET /my_index/_search
{
  "query": {
    "multi_match": {
      "query": "open source",
      "fields": ["title^3", "content"]
    }
  }
}

В этом примере поле «заголовок» имеет коэффициент значимости 3, что делает его более важным, чем поле «содержание» при расчете показателя релевантности.

  1. Запрос оценки функции:

Запрос оценки функции предоставляет гибкий способ изменения оценки релевантности документов на основе пользовательских функций. Это позволяет вам использовать сложные алгоритмы ранжирования или динамически применять повышения. Вот пример:

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, если они также соответствуют категории «технологии».

  1. Повышение по давности:

Повышение уровня последних документов может быть полезно в сценариях, где актуальность является важным фактором. Для этого 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 имеет решающее значение для повышения релевантности извлекаемых документов. В этой статье мы рассмотрели несколько методов, включая повышение терминов, повышение значений полей, запросы оценки функций и повышение по давности. Внедрив эти методы, вы сможете точнее настроить поисковые запросы и повысить удобство работы пользователей.