Apache Solr

Въведение в Apache Solr. Част 2 Заявка за изв

Въведение в Apache Solr. Част 2 Заявка за изв
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 с различните форми за заявки в уеб браузъра Firefox.

Първо, от менюто под основното поле за избор изберете елемента от менюто „Заявка“. След това таблото за управление ще покаже няколко полета за въвеждане, както следва:

Кликването върху бутона 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, която е инсталирана локално.

Освен това можете да дефинирате свой собствен манипулатор на заявки за изпращане на незадължителните параметри на заявката на анализатора на заявки, за да контролирате каква информация се връща.

Анализатори на заявки

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.орг

Връзки и справки

Топ 10 игри за игра на Ubuntu
Платформата на Windows е една от доминиращите платформи за игри поради огромния процент игри, които се развиват днес, за да поддържат Windows. Може ли...
5 най-добри аркадни игри за Linux
В днешно време компютрите са сериозни машини, използвани за игри. Ако не можете да получите новия висок резултат, ще разберете какво имам предвид. В т...
Битка за Уеснот 1.13.6 Разработка освободена
Битка за Уеснот 1.13.6, издаден миналия месец, е шестата версия за разработка в 1.13.x серия и предоставя редица подобрения, най-вече на потребителски...