Частина 1: Налаштування одного вузла
Сьогодні електронне зберігання ваших документів або даних на запам'ятовуючому пристрої є швидким і простим, також порівняно дешевим. Використовується посилання на ім'я файлу, яке призначене для опису того, про що йдеться в документі. Крім того, дані зберігаються в Системі управління базами даних (СУБД), такі як PostgreSQL, MariaDB або MongoDB, щоб назвати лише кілька варіантів. Декілька носіїв інформації або локально, або віддалено підключені до комп'ютера, такі як USB-накопичувач, внутрішній або зовнішній жорсткий диск, мережеве сховище (NAS), хмарне сховище або GPU / на базі Flash, як у Nvidia V100 [10].
Навпаки, зворотний процес пошуку потрібних документів у колекції документів є досить складним. Здебільшого це вимагає виявлення формату файлу без помилок, індексація документа та вилучення ключових понять (класифікація документів). Тут з’являється фреймворк Apache Solr. Він пропонує практичний інтерфейс для виконання згаданих кроків - створення індексу документа, прийняття пошукових запитів, здійснення фактичного пошуку та повернення результату пошуку. Таким чином, Apache Solr формує ядро для ефективного дослідження бази даних або елемента зберігання документів.
У цій статті ви дізнаєтесь, як працює Apache Solr, як налаштувати єдиний вузол, індексувати документи, здійснити пошук та отримати результат.
Наступні статті ґрунтуються на цьому, і в них ми обговорюємо інші, більш конкретні випадки використання, такі як інтеграція СУБД PostgreSQL як джерела даних або балансування навантаження на декількох вузлах.
Про проект Apache Solr
Apache Solr - це пошукова система, заснована на потужному сервері індексу пошуку Lucene [2]. Написаний на Java, він підтримується під егідою Фонду програмного забезпечення Apache (ASF) [6]. Він вільно доступний за ліцензією Apache 2.
Тема «Знайти документи та дані знову» відіграє дуже важливу роль у світі програмного забезпечення, і багато розробників з нею інтенсивно займаються. На веб-сайті Awesomeopensource [4] перелічено понад 150 проектів з відкритим кодом пошукової системи. На початку 2021 року ElasticSearch [8] та Apache Solr / Lucene - дві найкращі собаки, коли мова заходить про пошук більших наборів даних. Розробляючи вашу пошукову систему, потрібно багато знань, Франк робить це за допомогою бібліотеки AdvaS Advanced Search [3] на базі Python з 2002 року.
Налаштування Apache Solr:
Встановлення та експлуатація Apache Solr не є складними, це просто ціла низка кроків, які ви повинні виконати. Залиште близько 1 години для результату першого запиту даних. Крім того, Apache Solr - це не просто хобі-проект, а й використовується у професійному середовищі. Тому обране середовище операційної системи призначене для тривалого використання.
В якості базового середовища для цієї статті ми використовуємо Debian GNU / Linux 11, який є майбутнім випуском Debian (на початку 2021 року), і очікується, що він буде доступний в середині 2021 року. У цьому підручнику ми очікуємо, що ви вже встановили його - або як власну систему, у віртуальній машині, як VirtualBox, або контейнері AWS.
Окрім основних компонентів, вам потрібно встановити в систему наступні програмні пакети:
- Завити
- Ява за замовчуванням
- Libcommons-cli-java
- Libxerces2-java
- Libtika-java (бібліотека проекту Apache Tika [11])
Ці пакети є стандартними компонентами Debian GNU / Linux. Якщо вони ще не встановлені, ви можете встановити їх за один раз як користувач з адміністративними правами, наприклад, root або через sudo, як показано нижче:
# apt-get install curl default-java libcommons-cli-java libxerces2-java libtika-javaПідготувавши середовище, другим кроком є встановлення Apache Solr. На даний момент Apache Solr недоступний як звичайний пакет Debian. Отже, потрібно отримати Apache Solr 8.8 із розділу завантаження веб-сайту проекту [9]. Використовуйте команду wget нижче, щоб зберегти її в каталозі / tmp вашої системи:
$ wget -O / tmp https: // завантаження.апаш.орг / люцен / сольр / 8.8.0 / solr-8.8.0.tgzПеремикач -O скорочує -output-документ і змушує wget зберігати отриманий дьоготь.gz у вказаному каталозі. Розмір архіву становить приблизно 190 млн. Потім розпакуйте архів у каталог / opt за допомогою tar. В результаті ви знайдете два підкаталоги - / opt / solr та / opt / solr-8.8.0, тоді як / opt / solr встановлюється як символічне посилання на останню. Apache Solr постачається із сценарієм налаштування, який ви виконуєте наступним чином:
# / opt / solr-8.8.0 / bin / install_solr_service.шЦе призводить до створення користувальницького Solr, запущеного в службі Solr, а також його домашній каталог під / var / solr встановлює службу Solr, додану з відповідними вузлами, і запускає службу Solr через порт 8983. Це значення за замовчуванням. Якщо ви незадоволені ними, ви можете змінити їх під час встановлення або навіть пізніше, оскільки сценарій установки приймає відповідні перемикачі для налаштування налаштування. Рекомендуємо ознайомитись із документацією Apache Solr щодо цих параметрів.
Програмне забезпечення Solr розташоване в наступних каталогах:
- смітник
містить двійкові файли та файли для запуску Solr як служби - внесок
зовнішні бібліотеки Solr, такі як обробник імпорту даних та бібліотеки Lucene - дист
внутрішні бібліотеки Solr - документи
посилання на документацію Solr, доступну в Інтернеті - приклад
приклади наборів даних або кілька випадків використання / сценаріїв - ліцензії
ліцензії на програмне забезпечення для різних компонентів Solr - сервер
файли конфігурації сервера, такі як сервер / тощо для служб та портів
Більш докладно ви можете прочитати про ці каталоги в документації Apache Solr [12].
Керування Apache Solr:
Apache Solr працює як послуга у фоновому режимі. Ви можете запустити його двома способами, використовуючи systemctl (перший рядок) як користувача з адміністративними дозволами або безпосередньо з каталогу Solr (другий рядок). Нижче перелічені обидві команди терміналу:
# systemctl start solr$ solr / bin / solr start
Зупинка Apache Solr виконується аналогічно:
# systemctl stop solr$ solr / bin / solr stop
Той самий шлях відбувається при перезапуску служби Apache Solr:
# systemctl перезапустіть solr$ solr / bin / solr перезапуск
Крім того, стан процесу Apache Solr може відображатися наступним чином:
# systemctl status solr$ solr / bin / status solr
Вихідні дані містять запущений службовий файл, як відповідну позначку часу, так і повідомлення журналу. На малюнку нижче видно, що послугу Apache Solr було запущено через порт 8983 із процесом 632. Процес успішно триває 38 хвилин.
Щоб побачити, чи активний процес Apache Solr, ви можете також перехресно перевірити, використовуючи команду ps у поєднанні з grep. Це обмежує вихідні дані ps для всіх активних процесів Apache Solr.
# ps сокира | grep - кольоровий сольрМалюнок нижче демонструє це для одного процесу. Ви бачите виклик Java, що супроводжується списком параметрів, наприклад, використання пам'яті (512M) портів для прослуховування на 8983 для запитів, 7983 на запити на зупинку та тип з'єднання (http).
Додавання користувачів:
Процеси Apache Solr виконуються з певним користувачем з іменем solr. Цей користувач корисний для управління процесами Solr, завантаження даних та надсилання запитів. Після налаштування користувач-розпорядник не має пароля і, як очікується, матиме його для входу, щоб продовжити далі. Встановіть пароль для користувальницького розв'язувача, наприклад кореня користувача, він відображається наступним чином:
# passwd solrАдміністрація Solr:
Керування Apache Solr здійснюється за допомогою панелі інструментів Solr. Це доступно через веб-браузер за адресою http: // localhost: 8983 / solr. На малюнку нижче показано основний вигляд.
Зліва ви бачите головне меню, яке веде вас до підрозділів для ведення журналу, адміністрування ядер Solr, налаштування Java та інформації про стан. Виберіть потрібне ядро, використовуючи поле вибору під меню. У правій частині меню відображається відповідна інформація. Запис у меню "Інформаційна панель" містить додаткові відомості щодо процесу Apache Solr, а також поточного завантаження та використання пам'яті.
Зверніть увагу, що вміст інформаційної панелі змінюється залежно від кількості ядер Solr та проіндексованих документів. Зміни впливають як на пункти меню, так і на відповідну інформацію, яка відображається праворуч.
Розуміння того, як працюють пошукові системи:
Простіше кажучи, пошукові системи аналізують документи, класифікують їх і дозволяють здійснювати пошук на основі їх класифікації. В основному, процес складається з трьох етапів, які називаються скануванням, індексуванням та ранжуванням [13].
Повзання є першим етапом і описує процес, за допомогою якого збирається новий та оновлений вміст. У пошуковій системі використовуються роботи, які також відомі як павуки або сканери, звідси термін сканування для перегляду доступних документів.
Називається другий етап індексація. Зібраний раніше вміст стає доступним для пошуку, перетворюючи оригінали документів у формат, зрозумілий пошуковій системі. Ключові слова та поняття витягуються та зберігаються у (масивних) базах даних.
Називається третій етап рейтинг і описує процес сортування результатів пошуку відповідно до їх релевантності за допомогою пошукового запиту. Загальноприйнято відображати результати в порядку зменшення, щоб результат, який має найбільше значення для запиту пошукового запиту, був на першому місці.
Apache Solr працює подібно до описаного раніше триступеневого процесу. Як і популярна пошукова система Google, Apache Solr використовує послідовність збору, зберігання та індексування документів з різних джерел і робить їх доступними / доступними для пошуку майже в реальному часі.
Apache Solr використовує різні способи індексації документів, включаючи такі [14]:
- Використання обробника запитів на індекс під час завантаження документів безпосередньо в Solr. Ці документи повинні бути у форматах JSON, XML / XSLT або CSV.
- Використання обробника запиту на вилучення (комірка Solr). Документи повинні бути у форматах PDF або Office, які підтримуються Apache Tika.
- Використання обробника імпорту даних, який передає дані з бази даних та каталогізує їх за допомогою імен стовпців. Обробник імпорту даних отримує дані з електронних листів, RSS-каналів, даних XML, баз даних та простих текстових файлів як джерела.
Обробник запитів використовується в Apache Solr, коли надсилається запит на пошук. Обробник запитів аналізує даний запит на основі тієї ж концепції обробника індексу, щоб відповідати запиту та раніше проіндексованим документам. Матчі класифікуються відповідно до їх відповідності або відповідності. Короткий приклад запиту продемонстровано нижче.
Завантаження документів:
Для простоти ми використовуємо зразок набору даних для наступного прикладу, який вже надає Apache Solr. Завантаження документів здійснюється як користувацький розбірник. Крок 1 - це створення ядра з назвою techproducts (для ряду технічних товарів).
$ solr / bin / solr create -c techproducts
Все добре, якщо ви бачите повідомлення "Створено нове ядро" techproducts "". Крок 2 - це додавання даних (XML-даних із exampledocs) до раніше створених основних технологічних продуктів. Використовується інструментальний пост, який параметризується за допомогою -c (назва ядра) та документи для завантаження.
$ solr / bin / post -c techproducts solr / example / exampledocs / *.xmlЦе призведе до результатів, показаних нижче, і буде містити весь виклик плюс 14 індексованих документів.
Також на інформаційній панелі відображаються зміни. Новий запис із назвою techproducts видно у спадному меню ліворуч, а кількість відповідних документів змінено праворуч. На жаль, детальний огляд необроблених наборів даних неможливий.
Якщо ядро / колекцію потрібно видалити, скористайтеся наступною командою:
$ solr / bin / solr delete -c techproductsЗапит даних:
Apache Solr пропонує два інтерфейси для запитів даних: через веб-панель інструментів та командний рядок. Ми пояснимо обидва методи нижче.
Надсилання запитів через інформаційну панель Solr виконується наступним чином:
- Виберіть вузол techproducts зі спадного меню.
- Оберіть запит запиту в меню під випадаючим меню.
Поля вводу спливають праворуч, щоб сформулювати запит, як обробник запиту (qt), запит (q) та порядок сортування (сортування). - Виберіть поле запиту Запит і змініть вміст запису з «*: *» на «manu: Belkin». Це обмежує пошук від "усіх полів із усіма записами" до "наборів даних, що мають ім'я Belkin у полі manu". У цьому випадку назва manu скорочує виробника у прикладі набору даних.
- Далі натисніть кнопку з Виконати запит. Результат - надрукований HTTP-запит зверху та результат пошукового запиту у форматі даних JSON нижче.
Командний рядок приймає той самий запит, що і на інформаційній панелі. Різниця полягає в тому, що ви повинні знати назву полів запиту. Для того, щоб надіслати той самий запит, що і вище, вам потрібно виконати таку команду в терміналі:
$ завиткаhttp: // localhost: 8983 / solr / techproducts / query?q = ”manu”: ”Бєлкін
Вихідні дані представлені у форматі JSON, як показано нижче. Результат складається із заголовка відповіді та фактичної відповіді. Відповідь складається з двох наборів даних.
Підведенню:
Вітаю! Ви досягли першого етапу з успіхом. Налаштовано базову інфраструктуру, і ви дізналися, як завантажувати та запитувати документи.
Наступний крок розгляне, як уточнити запит, сформулювати більш складні запити та зрозуміти різні веб-форми, що пропонуються на сторінці запитів Apache Solr. Також ми обговоримо, як обробити результат пошуку з використанням різних вихідних форматів, таких як XML, CSV та JSON.
Про авторів:
Jacqui Kabeta - еколог, завзятий дослідник, тренер та наставник. У кількох африканських країнах вона працювала в галузі ІТ та НУО.
Френк Хофманн - ІТ-розробник, тренер та автор, і воліє працювати з Берліна, Женеви та Кейптауна. Співавтор книги Debian Package Management, доступної з dpmb.орг
- [1] Apache Solr, https: // люцен.апаш.org / solr /
- [2] Люценова пошукова бібліотека, https: // lucene.апаш.орг /
- [3] Розширений пошук AdvaS, https: // pypi.org / project / AdvaS-Advanced-Search /
- [4] Топ 165 проектів з відкритим кодом пошукової системи, https: // awesomeopensource.com / projects / search-engine
- [5] ElasticSearch, https: // www.еластичний.co / de / elasticsearch /
- [6] Фонд програмного забезпечення Apache (ASF), https: // www.апаш.орг /
- [7] FESS, https: // fess.codelibs.орг / індекс.html
- [8] ElasticSearch, https: // www.еластичний.спільно / де /
- [9] Apache Solr, розділ завантаження, https: // lucene.апаш.org / solr / завантаження.htm
- [10] Nvidia V100, https: // www.nvidia.com / en-us / дата-центр / v100 /
- [11] Apache Tika, https: // tika.апаш.орг /
- [12] Розмітка каталогу Apache Solr, https: // lucene.апаш.org / solr / guide / 8_8 / installation-solr.html # каталог-макет
- [13] Як працюють пошукові системи: сканування, індексування та ранжування. Посібник для початківців з SEO https: // moz.com / для початківців-путівник до SEO / як працюють пошукові машини
- [14] Почніть з Apache Solr, https: // sematext.com / guides / solr / #: ~: text = Solr% 20works% 20by% 20gathering% 2C% 20storing, with% 20huge% 20volumes% 20of% 20data