Получите максимум от Apache Solr: техническое исследование поискового индексирования

Опубликовано: 2023-02-21

Функция поиска улучшает взаимодействие с пользователем веб-сайта, позволяя пользователю легко и быстро находить то, что он ищет. Тем более для крупных веб-сайтов, сайтов электронной коммерции и сайтов с динамическим контентом (новостные сайты, блоги).

Apache Solr — одна из самых популярных поисковых платформ, используемых веб-сайтами любого размера. Это поисковая система с открытым исходным кодом, основанная на Java, которая позволяет выполнять поиск в больших объемах данных, таких как статьи, продукты, отзывы клиентов и многое другое. Подробно изучите Apache Solr в этой статье.

Ознакомьтесь с этой статьей, чтобы узнать, как настроить Apache Solr в Drupal.

апач солр

Почему Apache Solr так популярен?

Apache Solr является быстрым и гибким и обеспечивает полнотекстовый поиск, выделение совпадений (выделение соответствующего условия поиска), фасетный поиск (более точный поиск), индексирование в реальном времени (позволяет немедленно индексировать новый контент), динамическую кластеризацию ( систематизирует результаты поиска по группам), интеграцию с базой данных, функции NoSQL (нереляционная база данных) и широкие возможности обработки документов (для индексации документов различных форматов, таких как PDF, MS Office, Open office).

Несколько полезных фактов об Apache Solr:

  • Первоначально он был разработан CNET Networks, Inc. в качестве поисковой системы для своих веб-сайтов и статей. Позже он был открыт и стал проектом Apache верхнего уровня.
  • Поддерживает несколько языков программирования, таких как PHP, Java, Python и Ruby. Он также предоставляет API для этих языков.
  • Имеет встроенную поддержку геопространственного поиска, позволяющую искать контент на основе его местоположения. Особенно полезно для таких сайтов, как сайты о недвижимости, туристические сайты и т. д.
  • Поддерживает расширенные функции поиска, такие как проверка орфографии, автозаполнение и пользовательский поиск с помощью API и плагинов.
  • Использует Lucene для индексации и поиска.

Что такое Люсен

Apache Lucene — это библиотека поиска Java с открытым исходным кодом, которая позволяет легко добавлять в приложение функции поиска или извлечения информации. Он универсальный, мощный, точный и работает на основе эффективного алгоритма поиска.

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

Что такое индексация?

Все поисковые системы начинают с индексации. Индексирование — это обработка исходных данных в высокоэффективный поиск по перекрестным ссылкам для облегчения быстрого поиска.

Поисковые системы не индексируют данные напрямую. Тексты сначала разбиваются на токены (атомарные элементы). Поиск — это процесс обращения к поисковому индексу и получения документа, соответствующего запросу.

Преимущества индексации

  • Быстрый и точный поиск информации (собирает, анализирует и сохраняет)
  • Без индексации поисковой системе требуется больше времени для сканирования каждого документа.

Поток индексации

Поток индексации

Сначала документ будет проанализирован и разбит на токены. Все эти токены будут проиндексированы по инвертированному индексу. Инвертированный индекс — это способ, которым Solr строит индекс.

Как работает инвертированное индексирование

Предположим, у нас есть 3 документа:

  1. Я люблю шоколад (D 1)
  2. Я заказал шоколадный торт (D 2)
  3. Я приготовила большой ванильный торт (D 3)

Способ его токенизации показан во 2-м столбце таблицы ниже.

токенизированный

«Шоколад» доступен в D1 и D2.
«Торт» доступен в D2 и D3.
«Большой» доступен в D3
«Заказано» доступно в D2
«Подготовлено» доступно в D3
«Ваниль» доступна в D3

Вы заметите, что такие слова, как «я», «люблю», не токенизированы. Это так называемые стоп-слова, которые Solr не будет индексировать или искать.

Поэтому, когда кто-то ищет термин «Шоколадный торт», движок просматривает индекс. Вместо того, чтобы искать документ, он сначала просматривает индекс, чтобы увидеть, к каким документам относятся слова «Шоколад» и «Торт». Это упрощает и ускоряет получение только определенного документа. Это называется инвертированной индексацией.

Схема хранения

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

В Drupal каждый узел рассматривается как документ. Поэтому, когда вы индексируете свой узел в Apache Solr, он считается документом. Каждый документ может содержать несколько полей. Lucene не имеет общей глобальной схемы. Это означает, что вы можете индексировать поля любого типа в каждом документе в Apache Solr.

документ-1

Как установить Apache Solr

  • Во-первых, убедитесь, что в вашей системе установлена ​​Java.
  • Далее давайте установим Solr отсюда: https://solr.apache.org/downloads.html
  • Загрузите и распакуйте Solr.
  • Запустите эту команду в папке Solr.

◦ bin/solr -e techproducts

Это создаст фиктивное ядро ​​для демонстрации, а также запустит сервер Solr.

  • После запуска сервера перейдите в браузер и введите «http://localhost:8983/».
  • Убедитесь, что Solr успешно установлен с фиктивным ядром.
соль

Структура каталогов

После того, как вы установили Solr, вы увидите множество папок, таких как:

Документы — содержит документацию по Solr.
Dist — основной файл Solr .jar
Contrib — содержит дополнительные плагины и специальные функции Solr.
Bin - скрипты Solr
Пример — содержит демонстрацию возможностей solr
Сервер - сердце Solr. Содержит веб-приложение Solr, журналы, ядро ​​Solr.

Файлы конфигурации

Для создания ядра нам потребуются два файла обязательно.

  • Схема.xml
  • Solrconfig.xml

Схема.xml

  • Он будет содержать типы полей, которые вы планируете поддерживать, и способы анализа этих типов.

Solrconfig.xml

  • Содержит различные настройки, управляющие поведением ядра Solr, например, обработчик запросов, диспетчер запросов, компоненты запросов, обработчики обновлений и т. д.

Запрос в Solr

Теперь давайте посмотрим, как запрашивать результаты Solr в пользовательском интерфейсе администратора Solr.

Параметр запроса

  • Локальные параметры — это аргументы в запросе Solr, относящиеся к параметру запроса.

Например: кот: электроника

параметр запроса

Параметр запроса с операциями

  • Мы можем запросить несколько полей с помощью операции.

Например: cat:electronics id:TWINX2048-3200PRO с q.op И
[ИЛИ]
кот: электроника И id:TWINX2048-3200PRO

операции с параметрами запроса

[ИЛИ]

операции с параметрами запроса или

Фильтровать запрос

Фильтрующий запрос помогает сузить результаты поиска. Запрос можно указать с помощью параметра fq, чтобы ограничить, какие документы возвращаются в расширенном наборе, не влияя на оценку.

запрос фильтра

Сортировать параметр

Параметр sort упорядочивает результаты поиска по возрастанию (asc) или по убыванию (desc). В зависимости от содержания параметр может использоваться как в числовом, так и в алфавитном порядке.

параметр сортировки

Строки Параметр

Параметр rows позволяет разбить результаты запроса на страницы.

строки-параметр

Параметр списка полей

Параметр fl ограничивает информацию, включенную в ответ на запрос, указанным списком полей.

параметр списка полей

Поле по умолчанию Параметр

Параметр поля по умолчанию — это поле по умолчанию для параметра запроса.

параметр поля по умолчанию

Основные параметры

Функция выделения в Solr позволяет включать фрагменты документов, соответствующие запросу.

выделить параметр

Некоторые из наиболее распространенных параметров выделения:

  • Hl.fl — выделяет список полей.
  • Hl.simple.pre — указывает, какой «тег» следует использовать перед выделенным словом.
  • Hl.simple.post — указывает, какой «тег» следует использовать после выделенного термина.
  • hl.highlightMultiTerm — если установлено значение true , Solr будет выделять запросы с подстановочными знаками. Если false , они вообще не будут выделены.
Хл Фл

Аспект:

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

  1. Параметр фасета

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

2. Параметр Facet.query

Когда пользователь включает параметр facet.query в свой запрос Solr, Solr создает список счетчиков фасетов, соответствующих количеству документов в индексе, соответствующих каждому запросу. Facet.query полезен, когда вы хотите создать фасеты на основе сложных критериев поиска, которые не могут быть легко представлены с помощью простого значения поля.

Есть несколько других параметров фасета, таких как facet.field (для указания полей, которые должны использоваться для создания фасетов) , facet.limit (максимальное количество фасетов для отображения для каждого поля) , facet.mincount (минимальное количество документов, необходимых для фасет, который должен быть включен в ответ) , facet.sort (указывает порядок, в котором должны отображаться значения фасета) .

грань

количество граней

Последние мысли

Apache Solr — это очень универсальная поисковая система со множеством интересных функций, которые можно настроить в соответствии с вашими требованиями. Drupal очень хорошо работает с Apache Solr. Если вы ищете экспертов Drupal для настройки мощной поисковой системы для вашего нового проекта, мы будем рады пойти дальше!