Introduksjon til Apache Solr. DEL 2 SPØRSMÅL SOLR

Introduksjon til Apache Solr. DEL 2 SPØRSMÅL SOLR
Apache Solr [1] er et rammeverk for søkemotor skrevet i Java og basert på Lucene Search Library [6]. I forrige artikkel satte vi opp Apache Solr på den snart utgitte Debian GNU/Linux 11, startet en enkelt datakjerne, lastet opp eksempeldata og demonstrerte hvordan du gjør et grunnleggende søk i datasettet ved hjelp av en enkel spørsmål.

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:

  • Forespørsel Handler (QT):
    Definer hvilken type forespørsel du vil sende til Solr. Du kan velge mellom standardforespørselshandlerne “/SELECT” (spørringsindekserte data), “/oppdatering” (oppdater indekserte data) og “/slett” (fjern de spesifiserte indekserte dataene), eller en selvdefinert en.
  • Spørringshendelse (Q):
    Definere hvilke feltnavn og verdier som skal velges.
  • Filter -spørsmål (FQ):
    Begrens supersett av dokumenter som kan returneres uten å påvirke dokumentpoengsummen.
  • Sorter ordre (sorter):
    Definer den slags rekkefølgen på spørringsresultatene til enten stigende eller synkende
  • Utgangsvindu (start og rader):
    Begrens utgangen til de spesifiserte elementene
  • Feltliste (FL):
    Begrenser informasjonen som er inkludert i et spørringssvar på en spesifisert liste over felt.
  • Utgangsformat (WT):
    Definer ønsket utgangsformat. Standardverdien er JSON.

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.

  • Hent alle datasettene fra kjernebilene
    Curl http: // localhost: 8983/solr/cars/spørring?q =*:*
  • Hent alle datasettene fra kjernebilene som har en ID på 5
    Curl http: // localhost: 8983/solr/cars/spørring?Q = ID: 5
  • Hent feltmodellen fra alle datasettene til kjernebilene
    Alternativ 1 (med rømt &):
    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 '
  • Hent alle datasett for kjernebilene sortert etter pris i synkende rekkefølge, og send ut feltene, bare modell og pris, (versjon i enkeltkoblinger):
    Curl http: // localhost: 8983/solr/cars/query -d '
    q =*:*&
    Sorter = pris Desc &
    FL = Make, Model, Price '
  • Hent de første fem datasettene av kjernebilene sortert etter pris i synkende rekkefølge, og send ut feltene, modell og pris, bare (versjon i enkeltkoblinger):
    Curl http: // localhost: 8983/solr/cars/query -d '
    q =*:*&
    Rader = 5 &
    Sorter = pris Desc &
    FL = Make, Model, Price '
  • Hent de fem første datasettene av kjernebilene sortert etter pris i synkende rekkefølge, og send feltene for å lage, modell og pris pluss relevansscore, bare (versjon i enkeltkoblinger):
    Curl http: // localhost: 8983/solr/cars/query -d '
    q =*:*&
    Rader = 5 &
    Sorter = pris Desc &
    FL = Make, Model, Price, Score '
  • Returner alle lagrede felt så vel som relevansscore:
    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

  • [1] Apache Solr, https: // Lucene.Apache.org/solr/
  • [2] Frank Hofmann og Jacqui Kabeta: Introduksjon til Apache Solr. Del 1, http: // linuxhint.com
  • [3] Yonik Seelay: Solr Query Syntax, http: // yonik.com/solr/spørring-syntax/
  • [4] Yonik Seelay: Solr Tutorial, http: // yonik.com/solr-tutorial/
  • [5] Apache Solr: spørringsdata, tutorialSpoint, https: // www.TutorialSpoint.com/apache_solr/apache_solr_querying_data.htm
  • [6] Lucene, https: // Lucene.Apache.org/
  • [7] Solrj, https: // Lucene.Apache.org/solr/guide/8_8/Bruke-solrj.html
  • [8] Curl, https: // krøll.se/
  • [9] JQ, https: // github.com/stedolan/jq
  • [10] XMLStarlet, http: // xmlstar.SourceForge.nett/
  • [11] CSVKIT, https: // csvkit.LEDTHEDOCS.io/en/siste/