Ovo je nastavak članka iz prethodnog. Objasnit ćemo kako precizirati upit, formulirati složenije kriterije pretraživanja s različitim parametrima i razumjeti različite web obrasce stranice upita Apache Solr. Također ćemo razgovarati o tome kako naknadno obraditi rezultat pretraživanja koristeći različite izlazne formate kao što su XML, CSV i JSON.
Upit Apache Solr
Apache Solr zamišljen je kao web aplikacija i usluga koja radi u pozadini. Rezultat je da bilo koja klijentska aplikacija može komunicirati s Solrom slanjem upita prema njemu (fokus ovog članka), manipuliranjem jezgrom dokumenta dodavanjem, ažuriranjem i brisanjem indeksiranih podataka te optimiziranjem osnovnih podataka. Dvije su mogućnosti - putem nadzorne ploče / web sučelja ili pomoću API-ja slanjem odgovarajućeg zahtjeva.
Uobičajeno je koristiti prva opcija radi testiranja, a ne radi redovitog pristupa. Donja slika prikazuje Nadzornu ploču iz korisničkog sučelja Apache Solr Administration s različitim obrascima upita u web pregledniku Firefox.
Prvo iz izbornika ispod polja za odabir jezgre odaberite unos u izborniku "Upit". Zatim će nadzorna ploča prikazati nekoliko polja za unos kako slijedi:
- Obrađivač zahtjeva (qt):
Definirajte vrstu zahtjeva koji želite poslati tvrtki Solr. Možete birati između zadanih obrađivača zahtjeva "/ select" (upit indeksiranih podataka), "/ update" (ažuriranje indeksiranih podataka) i "/ delete" (uklanjanje navedenih indeksiranih podataka) ili samo-definiranog. - Događaj upita (q):
Odredite koja imena polja i vrijednosti treba odabrati. - Filtriraj upite (fq):
Ograničite nabor dokumenata koji se mogu vratiti bez utjecaja na rezultat dokumenta. - Redoslijed (sortiranje):
Definirajte redoslijed sortiranja rezultata upita prema rastućem ili silaznom - Izlazni prozor (početak i redovi):
Ograničite izlaz na navedene elemente - Popis polja (fl):
Informacije ograničene na odgovor na upit ograničavaju na navedeni popis polja. - Izlazni format (wt):
Definirajte željeni izlazni format. Zadana vrijednost je JSON.
Klikom na gumb Izvrši upit pokreće se željeni zahtjev. Za praktične primjere pogledajte u nastavku.
Kao druga opcija, možete poslati zahtjev pomoću API-ja. Ovo je HTTP zahtjev koji bilo koja aplikacija može poslati Apache Solr-u. Solr obrađuje zahtjev i vraća odgovor. Poseban slučaj je povezivanje s Apache Solr putem Java API-ja. Ovo je prepušteno odvojenom projektu nazvanom SolrJ [7] - Java API bez potrebe za HTTP vezom.
Sintaksa upita
Sintaksa upita najbolje je opisana u [3] i [5]. Različiti nazivi parametara izravno odgovaraju imenima polja za unos u gore objašnjenim obrascima. Tablica u nastavku navodi ih, plus praktične primjere.
Indeks parametara upita
Parametar | Opis | Primjer |
---|---|---|
q | Glavni parametar upita Apache Solr - imena polja i vrijednosti. Ocjene njihove sličnosti dokumentiraju izraze u ovom parametru. | Id: 5 automobili: * adilla * *: X5 |
fq | Ograničite skup rezultata na nadskupove dokumenata koji se podudaraju s filtrom, na primjer, definirane pomoću Function Range Query Parser | model id, model |
početak | Odstupanja za rezultate stranica (početak). Zadana vrijednost ovog parametra je 0. | 5 |
redaka | Odstupanja za rezultate stranice (kraj). Vrijednost ovog parametra prema zadanim je postavkama 10 | 15 |
vrsta | Određuje popis polja odvojenih zarezima na temelju kojih će se razvrstati rezultati upita | model uzlazno |
fl | Određuje popis polja koja će se vratiti za sve dokumente u skupu rezultata | model id, model |
tež | Ovaj parametar predstavlja vrstu pisca odgovora koji smo željeli vidjeti. Vrijednost je prema zadanim postavkama JSON. | json xml |
Pretrage se vrše putem HTTP GET zahtjeva s nizom upita u parametru q. Primjeri u nastavku pojasnit će kako ovo funkcionira. U upotrebi je curl za slanje upita Solr-u koji je instaliran lokalno.
- Dohvatite sve skupove podataka iz jezgre automobila curl http: // localhost: 8983 / solr / cars / query?q = *: *
- Dohvatite sve skupove podataka iz osnovnih automobila koji imaju id 5 curl http: // localhost: 8983 / solr / cars / query?q = id: 5
- Dohvatite model polja iz svih skupova podataka osnovnih automobila
Opcija 1 (s prebjeglim &): curl http: // localhost: 8983 / solr / cars / query?q = id: * \ & fl = modelOpcija 2 (upit u pojedinačnim tikovima):
curl 'http: // localhost: 8983 / solr / cars / query?q = id: * & fl = model ' - Dohvatite sve skupove podataka osnovnih automobila poredanih prema cijeni u padajućem redoslijedu i iznesite samo polja make, model i cijena (verzija u pojedinačnim tikovima): curl http: // localhost: 8983 / solr / cars / query -d '
q = *: * &
sortiraj = cijena opis &
fl = marka, model, cijena ' - Dohvatite prvih pet skupova podataka osnovnih automobila sortiranih prema cijeni u padajućem redoslijedu i iznesite samo polja make, model i cijena (verzija u pojedinačnim tikovima): curl http: // localhost: 8983 / solr / cars / query - d '
q = *: * &
redaka = 5 &
sortiraj = cijena opis &
fl = marka, model, cijena ' - Dohvatite prvih pet skupova podataka osnovnih automobila sortiranih prema cijeni u padajućem redoslijedu i iznesite polja marke, model i cijenu, kao i njegovu relevantnost, samo (verzija u pojedinačnim tikovima): curl http: // localhost: 8983 / solr / automobili / upit -d '
q = *: * &
redaka = 5 &
sortiraj = cijena opis &
fl = marka, model, cijena, rezultat ' - Vrati sva spremljena polja kao i ocjenu relevantnosti: curl http: // localhost: 8983 / solr / cars / query -d '
q = *: * &
fl = *, rezultat '
Nadalje, možete definirati vlastiti rukovatelj zahtjevima za slanje neobaveznih parametara zahtjeva u parser upita kako bi kontrolirao koje se informacije vraćaju.
Upit za raščlanjivanje podataka
Apache Solr koristi takozvani parser upita - komponentu koja prevodi vaš niz pretraživanja u određene upute za tražilicu. Analizator upita stoji između vas i dokumenta koji tražite.
Solr dolazi s raznim vrstama raščlanjivača koji se razlikuju u načinu na koji se obrađuje poslani upit. Standardni analizator upita dobro funkcionira za strukturirane upite, ali je manje tolerantan prema sintaksnim pogreškama. Istodobno su i DisMax i Extended DisMax Query Parser optimizirani za upite slične prirodnom jeziku. Dizajnirani su za obradu jednostavnih fraza koje su unijeli korisnici i za traženje pojedinačnih pojmova u nekoliko polja koristeći različito ponderiranje.
Nadalje, Solr također nudi takozvane Function Query (Upiti funkcije) koji omogućuju kombiniranje funkcije s upitom kako bi se generirala određena ocjena relevantnosti. Ti se analizatori nazivaju Function Query Parser i Function Range Query Parser. Primjer u nastavku prikazuje potonji za odabir svih skupova podataka za "bmw" (pohranjene u podatkovnom polju make) s modelima od 318 do 323:
curl http: // localhost: 8983 / solr / cars / query -d 'q = make: bmw &
fq = model: [318 DO 323] '
Naknadna obrada rezultata
Slanje upita Apache Solr je jedan dio, ali drugi obrađuje rezultat pretraživanja. Prvo, možete birati između različitih formata odgovora - od JSON-a do XML-a, CSV-a i pojednostavljenog Ruby formata. Jednostavno navedite odgovarajući wt parametar u upitu. Primjer koda u nastavku to pokazuje za dohvaćanje skupa podataka u CSV formatu za sve stavke koje koriste curl s escapeed &:
curl http: // localhost: 8983 / solr / cars / query?q = id: 5 \ & wt = csvIzlaz je popis odvojen zarezom kako slijedi:
Da biste dobili rezultat kao XML podatke, ali dva izlazna polja čine i modeliraju, pokrenite sljedeći upit:
curl http: // localhost: 8983 / solr / cars / query?q = *: * \ & fl = make, model \ & wt = xmlIzlaz je različit i sadrži i zaglavlje odgovora i stvarni odgovor:
Wget jednostavno ispisuje primljene podatke na stdout. To vam omogućuje naknadnu obradu odgovora pomoću standardnih alata naredbenog retka. Da ih nabrojimo nekoliko, sadrži jq [9] za JSON, xsltproc, xidel, xmlstarlet [10] za XML, kao i csvkit [11] za CSV format.
Zaključak
Ovaj članak prikazuje različite načine slanja upita u Apache Solr i objašnjava kako obraditi rezultat pretraživanja. U sljedećem ćete dijelu naučiti kako koristiti Apache Solr za pretraživanje u PostgreSQL-u, relacijskom sustavu upravljanja bazama podataka.
O autorima
Jacqui Kabeta je ekologinja, strastveni istraživač, trener i mentor. U nekoliko afričkih zemalja radila je u IT industriji i okruženjima nevladinih organizacija.
Frank Hofmann je informatički programer, trener i autor, a radije radi iz Berlina, Ženeve i Cape Towna. Koautor knjige za upravljanje paketima Debian dostupne na dpmb.org
Poveznice i reference
- [1] Apache Solr, https: // lucen.apache.org / solr /
- [2] Frank Hofmann i Jacqui Kabeta: Uvod u Apache Solr. 1. dio, http: // linuxhint.com
- [3] Yonik Seelay: Sinrima upita Solr, http: // yonik.com / solr / query-syntax /
- [4] Yonik Seelay: Solr Tutorial, http: // yonik.com / solr-tutorial /
- [5] Apache Solr: Upit za podatke, Tutorialspoint, https: // www.tutorialspoint.com / apache_solr / apache_solr_querying_data.htm
- [6] Lucen, https: // lucen.apache.org /
- [7] SolrJ, https: // lucen.apache.org / solr / guide / 8_8 / using-solrj.html
- [8] kovrča, https: // kovrča.se /
- [9] jq, https: // github.com / stedolan / jq
- [10] xmlstarlet, http: // xmlstar.sourceforge.neto/
- [11] csvkit, https: // csvkit.readthedocs.io / hr / najnovije /