Выделение и генерация отрывков в SOLR

Одной из важных функций SOLR является выделение и генерация отрывков, которые позволяют пользователю быстро оценить релевантность результатов поиска без необходимости просмотра полного текста документа.

HTML-код

Давайте рассмотрим, как использовать функции выделения и генерации отрывков в SOLR и приведем несколько примеров их применения.

Выделение отрывков (highlighting) в SOLR - это процесс подсветки фрагментов текста, содержащих искомые ключевые слова или фразы. Это делает результаты поиска более наглядными и помогает пользователям быстро определить, насколько релевантен каждый результат. SOLR предоставляет мощный механизм выделения отрывков, который основан на анализе индексированных данных и поиске соответствий с поисковым запросом.

Для использования функции выделения отрывков в SOLR необходимо настроить поле, в котором будет осуществляться поиск, как выделяемое (highlighted). Например, предположим, что у нас есть индекс с полями "title" и "content", и мы хотим выделить отрывки в поле "content". Для этого мы добавим следующую конфигурацию в файл schema.xml:

<field name="content" type="text_general" indexed="true" stored="true"/>
<field name="content_highlight" type="text_general" indexed="false" stored="true"/>

В этой конфигурации мы создаем новое поле "content_highlight", которое будет содержать выделенные отрывки. Затем мы должны указать SOLR, какие поля выделять, используя параметр hl.fl (highlight.field). Мы можем добавить этот параметр в запрос SOLR следующим образом:

?q=ключевое_слово&hl=true&hl.fl=content

После выполнения этого запроса SOLR вернет результаты с выделенными отрывками в поле "content_highlight".

Для дальнейшей настройки вида выделения отрывков в SOLR можно использовать параметры hl.simple.pre и hl.simple.post. Например, если мы хотим обернуть выделенные отрывки в HTML-теги для их стилизации, мы можем добавить следующую конфигурацию:

<str name="hl.simple.pre">&lt;b&gt;</str>
<str name="hl.simple.post">&lt;/b&gt;</str>

После добавления этих параметров SOLR будет обрамлять выделенные отрывки в теги <b> и </b>. Это позволяет применить к выделенным фрагментам определенный стиль, чтобы они привлекали больше внимания пользователей.

Примеры

Пример 1

Допустим, у нас есть поисковый запрос "компьютерная игра" и мы хотим выделить отрывки, содержащие эти ключевые слова. SOLR выполнит поиск и вернет результаты с выделенными отрывками, как в примере ниже:

{
  "response": {
    "docs": [
      {
        "id": "1",
        "title": "Лучшие компьютерные игры",
        "content": "Компьютерные игры являются популярной формой развлечения для многих людей. Существует множество жанров компьютерных игр, включая стратегии, шутеры, RPG и многое другое."
      }
    ]
  },
  "highlighting": {
    "1": {
      "content_highlight": ["Компьютерные игры являются популярной формой развлечения для многих людей. Существует множество жанров компьютерных игр, включая стратегии, шутеры, RPG и многое другое."]
    }
  }
}

В этом примере SOLR выделил ключевые слова "компьютерные" в поле "content" и обернул их в теги <b> и </b>.

Пример 2

Допустим, мы хотим изменить стиль выделения отрывков и обрамить их в теги <span class="highlight">. Для этого мы добавим следующую конфигурацию:

<str name="hl.simple.pre">&lt;span class="highlight"&gt;</str>
<str name="hl.simple.post">&lt;/span&gt;</str>

После применения этой конфигурации результаты поиска будут выглядеть следующим образом:

{
  "response": {
    "docs": [
      {
        "id": "1",
        "title": "Лучшие компьютерные игры",
        "content": "Компьютерные игры являются популярной формой развлечения для многих людей. Существует множество жанров компьютерных игр, включая стратегии, шутеры, RPG и многое другое."
      }
    ]
  },
  "highlighting": {
    "1": {
      "content_highlight": [
        "Компьютерные игры являются популярной формой развлечения для многих людей. Существует множество жанров компьютерных игр, включая стратегии, шутеры, RPG и многое другое."
      ]
    }
  }
}

В этом примере SOLR использует тег <span class="highlight"> для выделения отрывков с ключевыми словами.

Пример 3

SOLR также предоставляет возможность генерировать отрывки (snippet generation), которые содержат контекстные фрагменты текста вокруг найденных ключевых слов. Это особенно полезно, когда результаты поиска содержат длинные тексты, и пользователю нужно предоставить контекст для лучшего понимания.

Для генерации отрывков SOLR использует параметры hl.snippets и hl.fragsize. Параметр hl.snippets указывает, сколько отрывков (фрагментов) необходимо сгенерировать, а параметр hl.fragsize задает максимальную длину каждого отрывка.

Допустим, мы хотим сгенерировать 2 отрывка размером в 100 символов для поискового запроса "компьютерная игра". Мы добавим следующие параметры к запросу:

?q=компьютерная игра&hl=true&hl.fl=content&hl.snippets=2&hl.fragsize=100

SOLR выполнит поиск и вернет результаты с сгенерированными отрывками, как показано ниже:

{
  "response": {
    "docs": [
      {
        "id": "1",
        "title": "Лучшие компьютерные игры",
        "content": "Компьютерные игры являются популярной формой развлечения для многих людей. Существует множество жанров компьютерных игр, включая стратегии, шутеры, RPG и многое другое."
      }
    ]
  },
  "highlighting": {
    "1": {
      "content_highlight": [
        "Компьютерные игры являются популярной формой развлечения для многих людей. Существует...",
        "...включая стратегии, шутеры, RPG и многое другое."
      ]
    }
  }
}
В этом примере SOLR сгенерировал два отрывка, каждый из которых имеет длину 100 символов. Они предоставляют пользователю контекст вокруг ключевых слов и помогают лучше понять релевантность результатов.


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

(Изображение: https://www.pexels.com/photo/photo-of-a-html-code-16023919/ )

Комментарии

Популярные сообщения из этого блога

Цинк и SEO (1) - Ключевые слова

Как улучшить пользовательский опыт для SEO?

Использование Elasticsearch API для работы с данными