Tai yra ankstesnio straipsnio tęsinys. Mes aptarsime, kaip patikslinti užklausą, suformuluoti sudėtingesnius paieškos kriterijus su skirtingais parametrais ir suprasti skirtingas „Apache Solr“ užklausos puslapio žiniatinklio formas. Taip pat aptarsime, kaip apdoroti paieškos rezultatą naudojant skirtingus išvesties formatus, pvz., XML, CSV ir JSON.
Užklausa „Apache Solr“
„Apache Solr“ sukurta kaip žiniatinklio programa ir paslauga, veikianti fone. Rezultatas yra tas, kad bet kuri kliento programa gali bendrauti su „Solr“, siųsdama jai užklausas (šio straipsnio akcentas), manipuliuodama dokumento šerdimi, įtraukdama, atnaujindama ir ištrindama indeksuotus duomenis ir optimizuodama pagrindinius duomenis. Yra dvi galimybės - per prietaisų skydelį / žiniatinklio sąsają arba naudojant API siunčiant atitinkamą užklausą.
Įprasta naudoti pirmas variantas bandymo, o ne reguliaraus priėjimo tikslais. Žemiau pateiktame paveikslėlyje parodytas prietaisų skydelis iš „Apache Solr Administration“ vartotojo sąsajos su skirtingomis užklausų formomis žiniatinklio naršyklėje „Firefox“.
Pirmiausia meniu pagrindiniame pasirinkimo lauke pasirinkite meniu įrašą „Užklausa“. Tada prietaisų skydelyje bus rodomi keli įvesties laukai:
- Užklausų tvarkytojas (qt):
Apibrėžkite, kokią užklausą norite siųsti „Solr“. Galite pasirinkti numatytuosius užklausų tvarkytuvus „/ select“ (užklausos indeksuoti duomenys), „/ update“ (atnaujinti indeksuotus duomenis) ir „/ delete“ (pašalinti nurodytus indeksuotus duomenis), arba patys apibrėžtus. - Užklausos įvykis (q):
Nurodykite, kuriuos laukų pavadinimus ir reikšmes pasirinkti. - Filtruoti užklausas (fq):
Apribokite dokumentų, kuriuos galima grąžinti, rinkinį, nedarant įtakos dokumento balui. - Rūšiuoti (rūšiuoti):
Apibrėžkite užklausos rezultatų rūšiavimo tvarką didėjimo arba mažėjimo tvarka - Išvesties langas (pradžia ir eilutės):
Apribokite išvestį iki nurodytų elementų - Laukų sąrašas (fl):
Apriboja informaciją, įtraukiamą į užklausos atsakymą, iki nurodyto laukų sąrašo. - Išvesties formatas (svoris):
Apibrėžkite norimą išvesties formatą. Numatytoji vertė yra JSON.
Spustelėjus mygtuką Vykdyti užklausą, vykdoma norima užklausa. Norėdami sužinoti praktinių pavyzdžių, pažvelkite žemiau.
Kaip antrasis variantas, galite siųsti užklausą naudodami API. Tai yra HTTP užklausa, kurią bet kuri programa gali siųsti „Apache Solr“. „Solr“ apdoroja užklausą ir pateikia atsakymą. Ypatingas atvejis yra prisijungimas prie „Apache Solr“ per „Java“ API. Tai buvo perduota atskiram projektui pavadinimu „SolrJ“ [7] - „Java“ API nereikalaujant HTTP ryšio.
Užklausos sintaksė
Užklausos sintaksė geriausiai aprašyta [3] ir [5]. Skirtingi parametrų pavadinimai tiesiogiai atitinka aukščiau paaiškintų formų įvesties laukų pavadinimus. Žemiau esančioje lentelėje jie pateikiami kartu su praktiniais pavyzdžiais.
Užklausos parametrų rodyklė
Parametras | apibūdinimas | Pavyzdys |
---|---|---|
q | Pagrindinis „Apache Solr“ užklausos parametras - laukų pavadinimai ir reikšmės. Jų panašumo balai dokumentuoja šio parametro terminus. | Id: 5 automobiliai: * adilla * *: X5 |
fq | Apribokite rezultatų rinkinį superset dokumentais, kurie atitinka filtrą, pvz., Apibrėžtą per Funkcijų diapazono užklausų analizatorių | modelis id, modelis |
pradžia | Puslapio rezultatų kompensavimas (pradžia). Numatytoji šio parametro vertė yra 0. | 5 |
eilučių | Puslapio rezultatų (pabaigos) kompensavimas. Šio parametro vertė pagal numatytuosius nustatymus yra 10 | 15 |
rūšiuoti | Jis nurodo kableliais atskirtų laukų sąrašą, pagal kurį turi būti rūšiuojami užklausos rezultatai | modelis asc |
fl | Jame nurodomas laukų, kuriuos reikia grąžinti už visus rezultatų rinkinio dokumentus, sąrašas | modelis id, modelis |
wt | Šis parametras nurodo atsakymo rašytojo tipą, kurio rezultatą norėjome peržiūrėti. Pagal numatytuosius nustatymus tai yra JSON. | Json xml |
Paieškos atliekamos per HTTP GET užklausą su užklausos eilute q parametre. Toliau pateiktuose pavyzdžiuose bus paaiškinta, kaip tai veikia. Naudojamas „curl“, norint siųsti užklausą „Solr“, kuri įdiegta vietoje.
- Gauti visus duomenų rinkinius iš pagrindinių automobilių garbanos http: // localhost: 8983 / solr / cars / query?q = *: *
- Gaukite visus duomenų rinkinius iš pagrindinių automobilių, kurių ID yra 5 garbanos http: // localhost: 8983 / solr / cars / query?q = id: 5
- Gaukite lauko modelį iš visų pagrindinių automobilių duomenų rinkinių
1 variantas (su pabėgusiu &): susisukti http: // localhost: 8983 / solr / cars / query?q = id: * \ & fl = modelis2 parinktis (užklausa pavienėmis erkėmis):
susisukti 'http: // localhost: 8983 / solr / cars / query?q = id: * & fl = modelis ' - Gaukite visus pagrindinių automobilių duomenų rinkinius, surūšiuotus pagal kainą mažėjančia tvarka, ir pateikite tik gamintojo, modelio ir kainos laukus (versija pavienėmis varnelėmis): curl http: // localhost: 8983 / solr / cars / query -d '
q = *: * ir
rūšiuoti = kaina desc &
fl = markė, modelis, kaina “ - Gaukite pirmuosius penkis pagrindinių automobilių duomenų rinkinius, surūšiuotus pagal kainą mažėjančia tvarka, ir pateikite tik gamintojo, modelio ir kainos laukus (versija pavienėmis erkėmis): curl http: // localhost: 8983 / solr / cars / query - d '
q = *: * ir
eilučių = 5 &
rūšiuoti = kaina desc &
fl = markė, modelis, kaina “ - Gaukite pirmus penkis pagrindinių automobilių duomenų rinkinius, surūšiuotus pagal kainą mažėjančia tvarka, ir pateikite tik gamintojo, modelio ir kainos laukus bei jų atitikties balą (versija pavienėmis erkėmis): garbanė http: // localhost: 8983 / solr / automobiliai / užklausa -d '
q = *: * ir
eilučių = 5 &
rūšiuoti = kaina desc &
fl = markė, modelis, kaina, rezultatas “ - Grąžinkite visus saugomus laukus ir atitikimo balą: curl http: // localhost: 8983 / solr / cars / query -d '
q = *: * ir
fl = *, rezultatas '
Be to, galite nustatyti savo užklausų tvarkytuvą, kad užklausos analizatoriui būtų siunčiami pasirinktiniai užklausos parametrai, kad būtų galima kontroliuoti, kokia informacija grąžinama.
Užklausų analizatoriai
„Apache Solr“ naudoja vadinamąjį užklausų analizatorių - komponentą, kuris jūsų paieškos eilutę paverčia konkrečiomis paieškos variklio instrukcijomis. Užklausos analizatorius yra tarp jūsų ir dokumento, kurio ieškote.
„Solr“ yra įvairių analizatorių tipų, kurie skiriasi pateiktos užklausos apdorojimo būdu. Standartinis užklausų analizatorius gerai veikia struktūrinėms užklausoms, tačiau mažiau toleruoja sintaksės klaidas. Tuo pačiu metu tiek „DisMax“, tiek „Extended DisMax“ užklausų analizatorius yra optimizuoti natūralių kalbų tipo užklausoms. Jie skirti apdoroti paprastas vartotojų įvestas frazes ir ieškoti atskirų terminų keliuose laukuose, naudojant skirtingą svorį.
Be to, „Solr“ taip pat siūlo vadinamąsias funkcijų užklausas, kurios leidžia sujungti funkciją su užklausa, kad būtų sukurtas konkretus atitikimo balas. Šie analizatoriai vadinami funkcijų užklausų analizatoriumi ir funkcijų diapazono užklausų analizatoriumi. Toliau pateiktame pavyzdyje parodyta, kad paskutinis iš visų „bmw“ (saugomų duomenų lauke „make“) duomenų rinkinių su modeliais nuo 318 iki 323:
susisukti http: // localhost: 8983 / solr / cars / query -d 'q = markė: bmw &
fq = modelis: [318 iki 323] "
Po rezultatų apdorojimas
Užklausų siuntimas „Apache Solr“ yra viena dalis, bet paieškos rezultatų apdorojimas iš kitos. Pirmiausia galite pasirinkti skirtingus atsakymo formatus - nuo JSON iki XML, CSV ir supaprastinto „Ruby“ formato. Tiesiog nurodykite atitinkamą wt parametrą užklausoje. Žemiau pateiktas kodo pavyzdys rodo, kad visų elementų duomenų rinkinį CSV formatu galima gauti naudojant „curl“ su pabėgusiu &:
susisukti http: // localhost: 8983 / solr / cars / query?q = id: 5 \ & wt = csvIšvestis yra kableliais atskirtas sąrašas:
Norėdami gauti rezultatą kaip XML duomenis, bet tik du išvesties laukus ir modelį, vykdykite šią užklausą:
susisukti http: // localhost: 8983 / solr / cars / query?q = *: * \ & fl = markė, modelis \ & wt = xmlIšvestis skiriasi ir joje yra atsakymo antraštė ir tikrasis atsakymas:
Wget tiesiog atspausdina gautus duomenis stdout. Tai leidžia atsakymą apdoroti naudojant standartinius komandinės eilutės įrankius. Norėdami išvardyti keletą, jS [JSON], „xsltproc“, „xidel“, „XMLstarlet“ [10], skirtų XML, taip pat „csvkit“ [11], skirtą CSV formatui.
Išvada
Šiame straipsnyje parodomi įvairūs užklausų siuntimo būdai „Apache Solr“ ir paaiškinama, kaip apdoroti paieškos rezultatus. Kitoje dalyje sužinosite, kaip naudoti „Apache Solr“ ieškant santykių duomenų bazių valdymo sistemoje „PostgreSQL“.
Apie autorius
Jacqui Kabeta yra aplinkosaugininkas, aistringas tyrinėtojas, treneris ir patarėjas. Keliose Afrikos šalyse ji dirbo IT pramonėje ir NVO aplinkoje.
Frankas Hofmannas yra IT kūrėjas, treneris, autorius ir nori dirbti iš Berlyno, Ženevos ir Keiptauno. „Debian“ paketų tvarkymo knygos, kurią galite rasti dpmb, bendraautorius.org
Nuorodos ir nuorodos
- [1] „Apache Solr“, https: // liucenas.apache.org / solr /
- [2] Frankas Hofmannas ir Jacqui Kabeta: „Apache Solr“ įvadas. 1 dalis, http: // linuxhint.com
- [3] Yonik Seelay: „Solr Query Syntax“, http: // yonik.com / solr / query-syntax /
- [4] Yonik Seelay: „Solr“ pamoka, http: // yonik.com / solr-tutorial /
- [5] „Apache Solr“: duomenų užklausa, „Tutorialspoint“, https: // www.pamoka.com / apache_solr / apache_solr_querying_data.htm
- [6] Liucenas, https: // liucenas.apache.org /
- [7] SolrJ, https: // liucenas.apache.org / solr / guide / 8_8 / using-solrj.HTML
- [8] garbanos, https: // garbanos.se /
- [9] jq, https: // github.com / stedolan / jq
- [10] „xmlstarlet“, http: // xmlstar.sourceforge.tinklas /
- [11] csvkit, https: // csvkit.skaityti dokumentai.io / lt / naujausias /