Това е последваща статия към предишната. Ще разгледаме как да прецизираме заявката, да формулираме по-сложни критерии за търсене с различни параметри и да разберем различните уеб формуляри на страницата за заявки на Apache Solr. Също така ще обсъдим как да обработваме резултата от търсенето след използване на различни изходни формати като XML, CSV и JSON.
Заявка за Apache Solr
Apache Solr е проектиран като уеб приложение и услуга, която работи във фонов режим. Резултатът е, че всяко клиентско приложение може да комуникира с Solr, като му изпраща заявки (фокусът на тази статия), манипулира ядрото на документа чрез добавяне, актуализиране и изтриване на индексирани данни и оптимизиране на основните данни. Има две опции - чрез табло / уеб интерфейс или използване на API чрез изпращане на съответна заявка.
Често се използва първи вариант за целите на тестването, а не за редовен достъп. Фигурата по-долу показва таблото за управление от потребителския интерфейс за администриране на Apache Solr с различните форми за заявки в уеб браузъра Firefox.
Първо, от менюто под основното поле за избор изберете елемента от менюто „Заявка“. След това таблото за управление ще покаже няколко полета за въвеждане, както следва:
- Манипулатор на заявки (qt):
Определете какъв вид искане искате да изпратите до Solr. Можете да избирате между манипулаторите на заявки по подразбиране “/ select” (индексирани данни за заявка), “/ update” (актуализиране на индексирани данни) и “/ delete” (премахване на посочените индексирани данни), или самодефиниран. - Събитие за заявка (q):
Определете кои имена на полета и стойности да бъдат избрани. - Филтрирайте заявки (fq):
Ограничете набора от документи, които могат да бъдат върнати, без това да повлияе на резултата от документа. - Ред на сортиране (сортиране):
Определете реда на сортиране на резултатите от заявката за възходящ или низходящ - Изходен прозорец (начало и редове):
Ограничете изхода до посочените елементи - Списък на полетата (fl):
Ограничава информацията, включена в отговора на заявката, до определен списък с полета. - Изходен формат (wt):
Дефинирайте желания изходен формат. Стойността по подразбиране е JSON.
Кликването върху бутона Execute Query изпълнява желаната заявка. За практически примери погледнете по-долу.
Като втори вариант, можете да изпратите заявка с помощта на API. Това е HTTP заявка, която може да бъде изпратена до Apache Solr от всяко приложение. Solr обработва заявката и връща отговор. Специален случай на това е свързването с Apache Solr чрез Java API. Това е възложено на отделен проект, наречен SolrJ [7] - Java API, без да се изисква HTTP връзка.
Синтаксис на заявката
Синтаксисът на заявката е най-добре описан в [3] и [5]. Различните имена на параметри директно съответстват на имената на полетата за въвеждане във формулярите, обяснени по-горе. Таблицата по-долу ги изброява, плюс практически примери.
Индекс на параметрите на заявката
Параметър | Описание | Пример |
---|---|---|
q | Основният параметър на заявката на Apache Solr - имената на полетата и стойностите. Резултатите от тяхното сходство документират термините в този параметър. | Id: 5 автомобили: * adilla * *: X5 |
fq | Ограничете набора от резултати до надмножителните документи, които съответстват на филтъра, например дефинирани чрез функцията за анализ на обхвата на обхвата на функциите | модел id, модел |
старт | Компенсиране за резултатите от страницата (начало). Стойността по подразбиране на този параметър е 0. | 5 |
редове | Компенси за резултатите от страницата (край). Стойността на този параметър е 10 по подразбиране | 15 |
вид | Той определя списъка с полета, разделени със запетаи, въз основа на които резултатите от заявката трябва да бъдат сортирани | модел възходящ |
ет | Той определя списъка с полетата, които трябва да се върнат за всички документи в набора от резултати | модел id, модел |
тегл | Този параметър представлява типа писател на отговори, който искахме да видим резултата. Стойността на това е 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 - д '
q = *: * &
редове = 5 &
сортиране = цена описание &
fl = марка, модел, цена ' - Изтеглете първите пет набора от данни на основните автомобили, сортирани по цена в низходящ ред, и изведете полетата марка, модел и цена плюс неговия резултат за уместност (версия в единични отметки): 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 предлага и така наречените Функционални заявки, които позволяват дадена функция да се комбинира с заявка, за да се генерира специфичен резултат. Тези парсери се наричат Function Query Parser и Function Range Query Parser. Примерът по-долу показва последния, за да изберете всички набори от данни за „bmw“ (съхранявани в полето за данни make) с моделите от 318 до 323:
къдрене http: // localhost: 8983 / solr / cars / query -d 'q = марка: bmw &
fq = модел: [318 до 323] '
Последваща обработка на резултатите
Изпращането на заявки до Apache Solr е едната част, но последващата обработка на резултата от търсенето от другата. Първо, можете да избирате между различни формати за отговор - от JSON до XML, CSV и опростен Ruby формат. Просто посочете съответния wt параметър в заявка. Примерът на кода по-долу демонстрира това за извличане на набора от данни в CSV формат за всички елементи, използващи curl с escapeed &:
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, достъпна от dpmb.орг
Връзки и справки
- [1] Apache Solr, https: // lucene.апаш.org / solr /
- [2] Франк Хофман и Джаки Кабета: Въведение в Apache Solr. Част 1, http: // linuxhint.com
- [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: // извиване.се /
- [9] jq, https: // github.com / stedolan / jq
- [10] xmlstarlet, http: // xmlstar.sourceforge.нето /
- [11] csvkit, https: // csvkit.readthedocs.io / bg / най-новите /