Це наступна стаття до попередньої. Ми розглянемо, як уточнити запит, сформулювати більш складні критерії пошуку з різними параметрами та зрозуміти різні веб-форми сторінки запитів Apache Solr. Також ми обговоримо, як обробити результат пошуку з використанням різних вихідних форматів, таких як XML, CSV та JSON.
Запит Apache Solr
Apache Solr розроблений як веб-додаток та сервіс, що працює у фоновому режимі. Результатом є те, що будь-яка клієнтська програма може спілкуватися з Solr, надсилаючи до неї запити (основна увага в цій статті), маніпулюючи ядром документа шляхом додавання, оновлення та видалення проіндексованих даних та оптимізації основних даних. Є два варіанти - через інформаційну панель / веб-інтерфейс або за допомогою API, надіславши відповідний запит.
Загальновживаним є використання перший варіант для тестування, а не для регулярного доступу. На малюнку нижче показана інформаційна панель з інтерфейсу користувача Apache Solr Administration з різними формами запитів у веб-браузері Firefox.
Спочатку з меню під основним полем вибору виберіть пункт меню “Запит”. Далі на інформаційній панелі відображатимуться декілька полів введення наступним чином:
- Обробник запиту (qt):
Визначте, який запит ви хочете надіслати Solr. Ви можете вибрати між обробниками запитів за замовчуванням “/ select” (запит індексує дані), “/ update” (оновлення індексованих даних) та “/ delete” (видалення зазначених індексованих даних), або самовизначеним. - Подія запиту (q):
Визначте, які імена полів та значення слід вибрати. - Фільтрувати запити (fq):
Обмежте надмножину документів, які можна повернути, не впливаючи на кількість документів. - Порядок сортування (сортування):
Визначте порядок сортування результатів запиту як за зростанням, так і за спаданням - Вікно виводу (старт і рядки):
Обмежте вихід на вказані елементи - Список полів (fl):
Обмежує інформацію, включену у відповідь запиту, до вказаного списку полів. - Вихідний формат (мас.):
Визначте бажаний вихідний формат. Значення за замовчуванням - JSON.
Натискання кнопки Виконати запит запускає бажаний запит. Для практичних прикладів дивіться нижче.
Як другий варіант, Ви можете надіслати запит за допомогою 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, який встановлюється локально.
- Отримати всі набори даних з основного автомобіля curl http: // localhost: 8983 / solr / cars / query?q = *: *
- Отримати всі набори даних з основних автомобілів, які мають ідентифікатор 5 curl http: // localhost: 8983 / solr / cars / query?q = id: 5
- Отримайте модель поля з усіх наборів даних основних автомобілів
Варіант 1 (з екранованим &): curl http: // localhost: 8983 / solr / cars / query?q = id: * \ & fl = модельВаріант 2 (запит в окремих галочках):
curl 'http: // localhost: 8983 / solr / cars / query?q = id: * & fl = model ' - Отримати всі набори даних основних автомобілів, відсортованих за ціною, за спаданням та вивести лише поля make, model і price (версія в одиничних галочках): curl http: // localhost: 8983 / solr / cars / query -d '
q = *: * &
сортувати = ціна опис &
fl = марка, модель, ціна ' - Отримати перші п’ять наборів даних основних автомобілів, відсортованих за ціною в порядку убування, і вивести лише поля make, model і price (версія в одиничних галочках): curl http: // localhost: 8983 / solr / cars / query - d '
q = *: * &
рядків = 5 &
сортувати = ціна опис &
fl = марка, модель, ціна ' - Отримайте перші п’ять наборів даних основних автомобілів, відсортованих за ціною в порядку убування, і виведіть поля make, model і price, а також оцінку відповідності, лише (версія в одиничних галочках): curl http: // localhost: 8983 / solr / автомобілі / запит -d '
q = *: * &
рядків = 5 &
сортувати = ціна опис &
fl = марка, модель, ціна, оцінка ' - Повернути всі збережені поля, а також оцінку відповідності: curl http: // localhost: 8983 / solr / cars / query -d '
q = *: * &
fl = *, оцінка '
Крім того, ви можете визначити власний обробник запитів для надсилання необов’язкових параметрів запиту до синтаксичного аналізатора запитів, щоб контролювати, яка інформація повертається.
Синтакси синтаксичних запитів
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.орг
Посилання та посилання
- [1] Apache Solr, https: // люцен.апаш.org / solr /
- [2] Френк Хофманн і Джекі Кабета: Вступ до Apache Solr. Частина 1, http: // linuxhint.ком
- [3] Yonik Seelay: Синтаксис запиту Solr, http: // yonik.com / solr / query-syntax /
- [4] Yonik Seelay: Solr Tutorial, http: // yonik.com / solr-tutorial /
- [5] Apache Solr: запит даних, Tutorialspoint, https: // www.tutorialspoint.com / apache_solr / apache_solr_querying_data.htm
- [6] Люцен, https: // люцен.апаш.орг /
- [7] SolrJ, https: // люцен.апаш.org / solr / guide / 8_8 / using-solrj.html
- [8] завиток, https: // завиток.se /
- [9] jq, https: // github.com / stedolan / jq
- [10] xmlstarlet, http: // xmlstar.sourceforge.нетто /
- [11] csvkit, https: // csvkit.readthedocs.io / en / останні /