Apache Solr

Introduktion til Apache Solr. Del 2 Forespørgsel om Solr

Introduktion til Apache Solr. Del 2 Forespørgsel om Solr
Apache Solr [1] er en søgemaskine-ramme skrevet i Java og baseret på Lucene-søgebiblioteket [6]. I den forrige artikel oprettede vi Apache Solr på den snart udgivne Debian GNU / Linux 11, initierede en enkelt datakerne, uploadede eksempeldata og demonstrerede, hvordan man foretager en grundlæggende søgning i datasættet ved hjælp af en simpel forespørgsel.

Dette er en opfølgningsartikel til den forrige. Vi vil dække, hvordan man forfiner forespørgslen, formulerer mere komplekse søgekriterier med forskellige parametre og forstår Apache Solr-forespørgselssidens forskellige webformularer. Vi vil også diskutere, hvordan man efterbehandler søgeresultatet ved hjælp af forskellige outputformater såsom XML, CSV og JSON.

Forespørgsel på Apache Solr

Apache Solr er designet som en webapplikation og -tjeneste, der kører i baggrunden. Resultatet er, at ethvert klientapplikation kan kommunikere med Solr ved at sende forespørgsler til det (fokus i denne artikel), manipulere dokumentkernen ved at tilføje, opdatere og slette indekserede data og optimere kernedata. Der er to muligheder - via dashboard / web-interface eller ved hjælp af en API ved at sende en tilsvarende anmodning.

Det er almindeligt at bruge første mulighed til testformål og ikke til regelmæssig adgang. Figuren nedenfor viser instrumentbrættet fra Apache Solr Administration-brugergrænsefladen med de forskellige forespørgselsformularer i webbrowseren Firefox.

Vælg først menuen "Forespørgsel" fra menuen under kernevalgfeltet. Derefter viser instrumentbrættet flere indtastningsfelter som følger:

Ved at klikke på knappen Udfør forespørgsel køres den ønskede anmodning. Se praktiske eksempler nedenfor.

Som den anden mulighed, du kan sende en anmodning ved hjælp af en API. Dette er en HTTP-anmodning, der kan sendes til Apache Solr af enhver applikation. Solr behandler anmodningen og returnerer et svar. Et specielt tilfælde af dette er at oprette forbindelse til Apache Solr via Java API. Dette er outsourcet til et separat projekt kaldet SolrJ [7] - en Java API uden at kræve en HTTP-forbindelse.

Forespørgselssyntaks

Forespørgselssyntaks beskrives bedst i [3] og [5]. De forskellige parameternavne svarer direkte til navnene på indtastningsfelterne i ovenstående formularer. Tabellen nedenfor viser dem plus praktiske eksempler.

Forespørgselsparametreindeks

Parameter Beskrivelse Eksempel
q Den primære forespørgselsparameter for Apache Solr - feltnavne og værdier. Deres lighedsscorer dokumenterer udtryk i denne parameter. Id: 5
biler: * adilla *
*: X5
fq Begræns resultatsættet til de superset-dokumenter, der matcher filteret, for eksempel defineret via funktionsområde forespørgselsparser model
id, model
Start Forskydninger for sideresultater (begynder). Standardværdien for denne parameter er 0. 5
rækker Forskydninger for sideresultater (slut). Værdien af ​​denne parameter er som standard 10 15
sortere Det specificerer listen over felter adskilt af kommaer, baseret på hvilke forespørgselsresultaterne skal sorteres model asc
fl Den specificerer listen over de felter, der skal returneres for alle dokumenterne i resultatsættet model
id, model
vægt Denne parameter repræsenterer den type svarforfatter, vi ønskede at se resultatet. Værdien af ​​dette er JSON som standard. json
xml

Søgninger foretages via HTTP GET-anmodning med forespørgselsstrengen i q-parameteren. Eksemplerne nedenfor vil afklare, hvordan dette fungerer. I brug er curl for at sende forespørgslen til Solr, der er installeret lokalt.

Desuden kan du definere din egen anmodningshåndterer til at sende de valgfri anmodningsparametre til forespørgselsparseren for at kontrollere, hvilke oplysninger der returneres.

Forespørgselsparsere

Apache Solr bruger en såkaldt query parser - en komponent, der oversætter din søgestreng til specifikke instruktioner til søgemaskinen. En forespørgselsparser står mellem dig og det dokument, du søger efter.

Solr leveres med en række parsertyper, der adskiller sig i den måde, en indsendt forespørgsel håndteres på. Standard Query Parser fungerer godt til strukturerede forespørgsler, men er mindre tolerant over for syntaksfejl. Samtidig er både DisMax og Extended DisMax Query Parser optimeret til naturlige sproglignende forespørgsler. De er designet til at behandle enkle sætninger indtastet af brugerne og til at søge efter individuelle udtryk på tværs af flere felter ved hjælp af forskellige vægtninger.

Desuden tilbyder Solr også såkaldte Function Queries, der gør det muligt at kombinere en funktion med en forespørgsel for at generere en specifik relevans score. Disse parsere hedder Function Query Parser og Function Range Query Parser. Eksemplet nedenfor viser sidstnævnte til at vælge alle datasættene til “bmw” (gemt i datafeltets fabrikat) med modellerne fra 318 til 323:

krølle http: // localhost: 8983 / solr / biler / forespørgsel -d '
q = mærke: bmw &
fq = model: [318 TIL 323] '

Efterbehandling af resultater

Afsendelse af forespørgsler til Apache Solr er en del, men efterbehandling af søgeresultatet fra den anden. For det første kan du vælge mellem forskellige svarformater - fra JSON til XML, CSV og et forenklet Ruby-format. Du skal blot angive den tilsvarende wt-parameter i en forespørgsel. Kodeeksemplet nedenfor demonstrerer dette for at hente datasættet i CSV-format for alle elementerne ved hjælp af krølle med escaped &:

krølle http: // localhost: 8983 / solr / biler / forespørgsel?q = id: 5 \ & wt = csv

Outputtet er en komma-adskilt liste som følger:

For kun at modtage resultatet som XML-data, men de to outputfelter fremstiller og modelleres, skal du køre følgende forespørgsel:

krølle http: // localhost: 8983 / solr / biler / forespørgsel?q = *: * \ & fl = fabrikat, model \ & wt = xml

Outputtet er forskelligt og indeholder både svarhovedet og det aktuelle svar:

Wget udskriver simpelthen de modtagne data på stdout. Dette giver dig mulighed for at efterbehandle svaret ved hjælp af standardkommandolinjeværktøjer. For at nævne nogle få indeholder dette jq [9] til JSON, xsltproc, xidel, xmlstarlet [10] til XML samt csvkit [11] til CSV-format.

Konklusion

Denne artikel viser forskellige måder at sende forespørgsler til Apache Solr og forklarer, hvordan man behandler søgeresultatet. I den næste del lærer du, hvordan du bruger Apache Solr til at søge i PostgreSQL, et relationsdatabasehåndteringssystem.

Om forfatterne

Jacqui Kabeta er miljøforkæmper, ivrig forsker, træner og mentor. I flere afrikanske lande har hun arbejdet i it-industrien og NGO-miljøer.

Frank Hofmann er it-udvikler, træner og forfatter og foretrækker at arbejde fra Berlin, Genève og Cape Town. Medforfatter til Debian Package Management Book tilgængelig fra dpmb.org

Links og referencer

Sådan installeres og afspilles Doom på Linux
Introduktion til undergang Doom-serien opstod i 90'erne efter frigivelsen af ​​den originale Doom. Det var et øjeblikkeligt hit, og fra den tid af har...
Vulkan til Linux-brugere
Med hver nye generation af grafikkort ser vi spiludviklere skubbe grænserne for grafisk troskab og komme et skridt tættere på fotorealisme. Men på tro...
OpenTTD vs Simutrans
Oprettelse af din egen transportsimulering kan være sjovt, afslappende og ekstremt lokkende. Derfor skal du sørge for at prøve så mange spil som mulig...