Dette er en oppfølgingsartikkel til den forrige. Vi vil dekke hvordan du kan avgrense spørringen, formulere mer komplekse søkekriterier med forskjellige parametere, og forstå Apache Solr -spørringssidenes forskjellige nettskjemaer. Vi vil også diskutere hvordan du kan etterbehandle søkeresultatet ved å bruke forskjellige utgangsformater som XML, CSV og JSON.
Spørring av Apache Solr
Apache Solr er designet som en webapplikasjon og tjeneste som kjører i bakgrunnen. Resultatet er at enhver klientapplikasjon kan kommunisere med SOLR ved å sende spørsmål til den (fokuset i denne artikkelen), manipulere dokumentkjernen ved å legge til, oppdatere og slette indekserte data og optimalisere kjernedata. Det er to alternativer - via dashbord/nettgrensesnitt eller bruk av et API ved å sende en tilsvarende forespørsel.
Det er vanlig å bruke Første alternativ for testformål og ikke for regelmessig tilgang. Figuren nedenfor viser dashbordet fra Apache Solr -administrasjonsbrukergrensesnittet med de forskjellige spørringsskjemaene i nettleseren Firefox.
Først, fra menyen under kjernevalgsfeltet, velger du menyoppføringen "Query". Deretter vil dashbordet vise flere inngangsfelt som følger:
Klikk på Execute Query -knappen kjører ønsket forespørsel. For praktiske eksempler, ta en titt nedenfor.
Som andre alternativ, Du kan sende en forespørsel ved hjelp av en API. Dette er en HTTP -forespørsel som kan sendes til Apache Solr av alle applikasjoner. Solr behandler forespørselen og returnerer et svar. Et spesielt tilfelle av dette er koblet til Apache Solr via Java API. Dette har blitt outsourcet til et eget prosjekt kalt SOLRJ [7] - et Java API uten å kreve en HTTP -tilkobling.
Spørringssyntaks
Spørringssyntaks er best beskrevet i [3] og [5]. De forskjellige parameternavnene samsvarer direkte med navnene på oppføringsfeltene i skjemaene forklart ovenfor. Tabellen nedenfor viser dem, pluss praktiske eksempler.
Spørringsparametere indeks
Parameter | Beskrivelse | Eksempel |
---|---|---|
q | Hovedspørsmålsparameteren til Apache Solr - Feltnavnene og verdiene. Likhetspoengene deres dokumenterer til vilkår i denne parameteren. | ID: 5 Biler:*Adilla* *: X5 |
fq | Begrens resultatet som er satt til Superset -dokumentene som samsvarer med filteret, for eksempel definert via funksjonsområde spørringsfarer | modell id, modell |
start | Forskyvninger for sidesultater (begynn). Standardverdien for denne parameteren er 0. | 5 |
rader | Forskyvninger for sidesultater (slutt). Verdien av denne parameteren er som standard som standard | 15 |
sortere | Den spesifiserer listen over felt atskilt med komma, basert på hvilke spørringsresultater som skal sorteres | Modell ASC |
fl | Den spesifiserer listen over feltene som skal returneres for alle dokumentene i resultatsettet | modell id, modell |
Wt | Denne parameteren representerer hvilken type responsforfatter vi ønsket å se resultatet. Verdien av dette er JSON som standard. | JSON XML |
Søk gjøres via http Få forespørsel med spørringsstrengen i Q -parameteren. Eksemplene nedenfor vil avklare hvordan dette fungerer. I bruk er Curl for å sende spørringen til Solr som er installert lokalt.
Curl http: // localhost: 8983/solr/cars/spørring?q =*:*
Curl http: // localhost: 8983/solr/cars/spørring?Q = ID: 5
Curl http: // localhost: 8983/solr/cars/spørring?q = id:*\ & fl = modell
Alternativ 2 (spørring i enkeltkoblinger):
Curl 'http: // localhost: 8983/solr/cars/spørring?q = id:*& fl = modell '
Curl http: // localhost: 8983/solr/cars/query -d '
q =*:*&
Sorter = pris Desc &
FL = Make, Model, Price '
Curl http: // localhost: 8983/solr/cars/query -d '
q =*:*&
Rader = 5 &
Sorter = pris Desc &
FL = Make, Model, Price '
Curl http: // localhost: 8983/solr/cars/query -d '
q =*:*&
Rader = 5 &
Sorter = pris Desc &
FL = Make, Model, Price, Score '
Curl http: // localhost: 8983/solr/cars/query -d '
q =*:*&
fl =*, score '
Videre kan du definere din egen forespørselsbehandler for å sende valgfrie forespørselsparametere til spørringsparseren for å kontrollere hvilken informasjon som returneres.
Spørringsfarere
Apache Solr bruker en såkalt spørringssamp. En spørringsfarer står mellom deg og dokumentet du søker etter.
Solr kommer med en rekke analysertyper som er forskjellige i måten en innsendt spørsmål blir håndtert. Standard spørringsfarer fungerer bra for strukturerte spørsmål, men er mindre tolerant overfor syntaksfeil. Samtidig er både Dismax og utvidet DMAX-spørringsfarer optimalisert for naturlige språklignende spørsmål. De er designet for å behandle enkle setninger som er lagt inn av brukere og for å søke etter individuelle termer på flere felt ved hjelp av forskjellig vekting.
Videre tilbyr Solr også såkalte funksjonsspørsmål som lar en funksjon kombineres med en spørring for å generere en spesifikk relevansscore. Disse analyserne heter Function Query Parser and Function Range Query Parser. Eksemplet nedenfor viser det siste for å velge alle datasettene for “BMW” (lagret i datafeltet) med modellene fra 318 til 323:
Curl http: // localhost: 8983/solr/cars/query -d '
Q = Make: BMW &
FQ = modell: [318 til 323] '
Etterbehandling av resultatene
Å sende spørsmål til Apache Solr er en del, men etterbehandling av søkeresultatet fra den andre. Først kan du velge mellom forskjellige svarformater - fra JSON til XML, CSV og et forenklet Ruby -format. Bare spesifiser den tilsvarende WT -parameteren i en spørring. Kodeeksemplet nedenfor viser dette for å hente datasettet i CSV -format for alle elementene som bruker Curl med rømte og:
Curl http: // localhost: 8983/solr/cars/spørring?q = id: 5 \ & wt = CSV
Utgangen er en komma-separert liste som følger:
For å motta resultatet som XML -data, men de to utgangsfeltene lager og modell, kjører bare følgende spørsmål:
Curl http: // localhost: 8983/solr/cars/spørring?q =*:*\ & fl = make, modell \ & wt = xml
Utgangen er forskjellig og inneholder både responsoverskriften og den faktiske responsen:
WGET skriver ganske enkelt ut mottatte data på stdout. Dette lar deg legge ut responsen ved hjelp av standard kommandolinjeverktøy. For å liste noen få, inneholder dette JQ [9] for JSON, XSLTPROC, Xidel, XMLStarlet [10] for XML samt CSVKIT [11] for CSV -format.
Konklusjon
Denne artikkelen viser forskjellige måter å sende spørsmål til Apache Solr og forklarer hvordan du behandler søkeresultatet. I neste del lærer du hvordan du bruker Apache Solr til å søke i PostgreSQL, et relasjonsdatabasestyringssystem.
Om forfatterne
Jacqui Kabeta er en miljøvern, ivrig forsker, trener og mentor. I flere afrikanske land har hun jobbet i IT -bransjen og NGO -miljøer.
Frank Hofmann er en IT -utvikler, trener og forfatter og foretrekker å jobbe fra Berlin, Genève og Cape Town. Medforfatter av Debian Package Management Book tilgjengelig fra DPMB.org
Lenker og referanser