Apache Solr

Вступ до Apache Solr. Частина 2 Запит Solr

Вступ до Apache Solr. Частина 2 Запит Solr
Apache Solr [1] - це фреймворк пошукової системи, написаний на Java і заснований на бібліотеці пошуку Lucene [6]. У попередній статті ми встановили Apache Solr на скоро випущеному Debian GNU / Linux 11, ініціювали єдине ядро ​​даних, завантажили приклади даних та продемонстрували, як здійснити базовий пошук у наборі даних за допомогою простого запит.

Це наступна стаття до попередньої. Ми розглянемо, як уточнити запит, сформулювати більш складні критерії пошуку з різними параметрами та зрозуміти різні веб-форми сторінки запитів Apache Solr. Також ми обговоримо, як обробити результат пошуку з використанням різних вихідних форматів, таких як XML, CSV та JSON.

Запит Apache Solr

Apache Solr розроблений як веб-додаток та сервіс, що працює у фоновому режимі. Результатом є те, що будь-яка клієнтська програма може спілкуватися з Solr, надсилаючи до неї запити (основна увага в цій статті), маніпулюючи ядром документа шляхом додавання, оновлення та видалення проіндексованих даних та оптимізації основних даних. Є два варіанти - через інформаційну панель / веб-інтерфейс або за допомогою API, надіславши відповідний запит.

Загальновживаним є використання перший варіант для тестування, а не для регулярного доступу. На малюнку нижче показана інформаційна панель з інтерфейсу користувача Apache Solr Administration з різними формами запитів у веб-браузері Firefox.

Спочатку з меню під основним полем вибору виберіть пункт меню “Запит”. Далі на інформаційній панелі відображатимуться декілька полів введення наступним чином:

Натискання кнопки Виконати запит запускає бажаний запит. Для практичних прикладів дивіться нижче.

Як другий варіант, Ви можете надіслати запит за допомогою API. Це HTTP-запит, який може надіслати Apache Solr будь-яка програма. Solr обробляє запит і повертає відповідь. Особливим випадком цього є підключення до Apache Solr через Java API. Це було передано в окремий проект під назвою SolrJ [7] - Java API без необхідності з'єднання HTTP.

Синтаксис запиту

Синтаксис запиту найкраще описаний у [3] та [5]. Різні імена параметрів безпосередньо відповідають іменам полів введення у формах, пояснених вище. У таблиці нижче наведено їх, а також практичні приклади.

Індекс параметрів запиту

Параметр Опис Приклад
q Основний параметр запиту Apache Solr - імена полів та значення. Їх схожість балів підтверджує терміни за цим параметром. Ідентифікатор: 5
автомобілі: * adilla *
*: X5
fq Обмежте набір результатів до надмножинних документів, які відповідають фільтру, наприклад, визначеним за допомогою парсера запитів діапазону функцій модель
ідентифікатор, модель
почати Компенсація результатів сторінки (початок). Значенням цього параметра за замовчуванням є 0. 5
рядки Компенсація результатів сторінки (кінець). Значення цього параметра за замовчуванням дорівнює 10 15
сортувати Він визначає список полів, розділених комами, на основі яких слід відсортувати результати запиту модель вис
ет Він визначає список полів, які потрібно повернути для всіх документів у наборі результатів модель
ідентифікатор, модель
мас Цей параметр представляє тип автора відповідей, який ми хотіли переглянути результат. Значенням цього параметра є JSON за замовчуванням. json
xml

Пошук здійснюється за допомогою HTTP-запиту GET із рядком запиту в параметрі q. Наведені нижче приклади пояснять, як це працює. Використовується curl для надсилання запиту до Solr, який встановлюється локально.

Крім того, ви можете визначити власний обробник запитів для надсилання необов’язкових параметрів запиту до синтаксичного аналізатора запитів, щоб контролювати, яка інформація повертається.

Синтакси синтаксичних запитів

Apache Solr використовує так званий парсер запитів - компонент, який перетворює рядок пошуку в конкретні інструкції для пошукової системи. Синтаксичний аналізатор запитів стоїть між вами та документом, який ви шукаєте.

Solr постачається з різними типами парсерів, які відрізняються способом обробки поданого запиту. Стандартний аналізатор запитів добре працює для структурованих запитів, але менш терпимий до синтаксичних помилок. У той же час і DisMax, і розширений аналізатор запитів DisMax оптимізовані для запитів, схожих на природні мови. Вони призначені для обробки простих фраз, що вводяться користувачами, та для пошуку окремих термінів у кількох полях з використанням різної ваги.

Крім того, Solr також пропонує так звані запити функцій, які дозволяють поєднувати функції з запитом, щоб створити конкретний показник релевантності. Ці аналізатори називаються синтаксичним аналізатором запитів функцій та синтаксичним аналізатором діапазону функцій. У наведеному нижче прикладі показано останній, щоб вибрати всі набори даних для “bmw” (що зберігаються у полі даних make) з моделями від 318 до 323:

curl http: // localhost: 8983 / solr / cars / query -d '
q = make: bmw &
fq = модель: [318 ДО 323] '

Подальша обробка результатів

Надсилання запитів до Apache Solr - це одна частина, але після обробки результатів пошуку з іншої. По-перше, ви можете вибрати між різними форматами відповідей - від JSON до XML, CSV та спрощеного формату Ruby. Просто вкажіть відповідний параметр wt у запиті. Наведений нижче приклад коду демонструє це для отримання набору даних у форматі CSV для всіх елементів, що використовують curl з escaped &:

curl http: // localhost: 8983 / solr / cars / query?q = id: 5 \ & wt = csv

Результатом є список, відокремлений комами, наступним чином:

Для того, щоб отримати результат як дані XML, але обидва поля виводу make і model, виконайте такий запит:

curl http: // localhost: 8983 / solr / cars / query?q = *: * \ & fl = make, модель \ & wt = xml

Результат відрізняється і містить як заголовок відповіді, так і фактичну відповідь:

Wget просто друкує отримані дані на stdout. Це дозволяє вам обробити відповідь за допомогою стандартних інструментів командного рядка. Щоб перелічити кілька, він містить jq [9] для JSON, xsltproc, xidel, xmlstarlet [10] для XML, а також csvkit [11] для формату CSV.

Висновок

У цій статті показано різні способи надсилання запитів до Apache Solr та пояснено, як обробити результат пошуку. У наступній частині ви дізнаєтесь, як використовувати Apache Solr для пошуку в PostgreSQL, реляційній системі управління базами даних.

Про авторів

Jacqui Kabeta - еколог, завзятий дослідник, тренер та наставник. У кількох африканських країнах вона працювала в галузі ІТ та НУО.

Френк Хофманн - ІТ-розробник, тренер та автор, і воліє працювати з Берліна, Женеви та Кейптауна. Співавтор книги Debian Package Management, доступної з dpmb.орг

Посилання та посилання

Встановіть останню стратегічну гру OpenRA на Ubuntu Linux
OpenRA - це ігровий движок Libre / Free Real Time Strategy, який відтворює ранні ігри Вествуда, такі як класичний Command & Conquer: Red Alert. Пошире...
Встановіть найновіший емулятор Dolphin для Gamecube & Wii на Linux
Емулятор Dolphin дозволяє грати у вибрані вами ігри Gamecube та Wii на персональних комп’ютерах Linux (ПК). Будучи вільно доступним і відкритим ігров...
Як використовувати GameConqueror Cheat Engine в Linux
Стаття висвітлює посібник із використання механізму читів GameConqueror в Linux. Багато користувачів, які грають у ігри в Windows, часто використовуют...