Apache Solr

Introduktion till Apache Solr. Del 2 Fråga Solr

Introduktion till Apache Solr. Del 2 Fråga Solr
Apache Solr [1] är en sökmotorram skriven i Java och baserad på Lucene-sökbiblioteket [6]. I den tidigare artikeln satte vi upp Apache Solr på Debian GNU / Linux 11 som snart skulle släppas, initierade en enda datakärna, laddade upp exempeldata och visade hur man gör en grundläggande sökning i datamängden med en enkel fråga.

Detta är en uppföljningsartikel till den tidigare. Vi kommer att täcka hur man kan förfina frågan, formulera mer komplexa sökkriterier med olika parametrar och förstå Apache Solr-frågesidans olika webbformulär. Vi kommer också att diskutera hur man efterbearbetar sökresultatet med olika utdataformat som XML, CSV och JSON.

Fråga efter Apache Solr

Apache Solr är utformad som en webbapplikation och tjänst som körs i bakgrunden. Resultatet är att alla klientapplikationer kan kommunicera med Solr genom att skicka frågor till den (fokus för denna artikel), manipulera dokumentkärnan genom att lägga till, uppdatera och ta bort indexerad data och optimera kärndata. Det finns två alternativ - via instrumentpanelen / webbgränssnittet eller genom att använda ett API genom att skicka en motsvarande begäran.

Det är vanligt att använda första alternativet för teständamål och inte för regelbunden åtkomst. Figuren nedan visar instrumentpanelen från Apache Solr Administration-användargränssnittet med de olika frågeformerna i webbläsaren Firefox.

Välj först menyalternativet "Fråga" från menyn under kärnvalsfältet. Därefter visar instrumentpanelen flera inmatningsfält enligt följande:

Om du klickar på knappen Utför fråga körs önskad begäran. För praktiska exempel, ta en titt nedan.

Som den andra alternativet, du kan skicka en begäran med ett API. Detta är en HTTP-begäran som kan skickas till Apache Solr av alla applikationer. Solr behandlar begäran och returnerar ett svar. Ett speciellt fall av detta är att ansluta till Apache Solr via Java API. Detta har outsourcats till ett separat projekt som heter SolrJ [7] - ett Java API utan att det krävs en HTTP-anslutning.

Frågesyntax

Frågesyntaxen beskrivs bäst i [3] och [5]. De olika parameternamnen överensstämmer direkt med namnen på inmatningsfälten i de ovan beskrivna blanketterna. Tabellen nedan listar dem, plus praktiska exempel.

Query Parameters Index

Parameter Beskrivning Exempel
q Huvudfrågeparametern för Apache Solr - fältnamnen och värdena. Deras likhetspoäng dokumenterar termer i denna parameter. Id: 5
bilar: * adilla *
*: X5
fq Begränsa resultatuppsättningen till de superset-dokument som matchar filtret, till exempel definierat via Funktionsomfångsfrågan modell
id, modell
Start Offsets för sidresultat (börja). Standardvärdet för denna parameter är 0. 5
rader Offsets för sidresultat (slut). Värdet på denna parameter är 10 som standard 15
sortera Den specificerar listan över fält separerade med kommatecken, baserat på vilka sökresultaten ska sorteras modell asc
fl Den specificerar listan över de fält som ska returneras för alla dokument i resultatuppsättningen modell
id, modell
vikt Den här parametern representerar den typ av svarsförfattare som vi ville se resultatet. Värdet på detta är JSON som standard. json
xml

Sökningar görs via HTTP GET-begäran med frågesträngen i q-parametern. Exemplen nedan kommer att klargöra hur detta fungerar. I bruk är curl för att skicka frågan till Solr som är installerad lokalt.

Dessutom kan du definiera din egen begäranhanterare för att skicka de valfria begäranparametrarna till frågeparsern för att kontrollera vilken information som returneras.

Fråga Parsers

Apache Solr använder en så kallad frågeparser - en komponent som översätter din söksträng till specifika instruktioner för sökmotorn. En frågeparserare står mellan dig och det dokument du söker efter.

Solr levereras med en mängd olika parsertyper som skiljer sig åt i hur en inskickad fråga hanteras. Standard Query Parser fungerar bra för strukturerade frågor men är mindre tolerant för syntaxfel. Samtidigt är både DisMax och Extended DisMax Query Parser optimerade för naturliga språkliknande frågor. De är utformade för att bearbeta enkla fraser som anges av användare och för att söka efter enskilda termer över flera fält med olika viktning.

Solr erbjuder också så kallade funktionsfrågor som gör det möjligt att kombinera en funktion med en fråga för att generera en specifik relevanspoäng. Dessa tolkare heter Function Query Parser och Function Range Query Parser. Exemplet nedan visar den senare för att välja alla datamängder för “bmw” (lagrad i datafältet fabrikat) med modellerna 318 till 323:

curl http: // localhost: 8983 / solr / cars / query -d '
q = make: bmw &
fq = modell: [318 TILL 323] '

Efterbehandling av resultat

Skicka frågor till Apache Solr är en del, men efterbehandling av sökresultatet från den andra. Först kan du välja mellan olika svarsformat - från JSON till XML, CSV och ett förenklat Ruby-format. Ange bara motsvarande wt-parameter i en fråga. Kodexemplet nedan visar detta för att hämta dataset i CSV-format för alla objekt som använder curl med escaped &:

curl http: // localhost: 8983 / solr / cars / query?q = id: 5 \ & wt = csv

Utgången är en kommaseparerad lista enligt följande:

För att få resultatet som XML-data, men de två utmatningsfälten gör och modellerar, kör bara följande fråga:

curl http: // localhost: 8983 / solr / cars / query?q = *: * \ & fl = make, modell \ & wt = xml

Utgången är annorlunda och innehåller både svarshuvudet och det faktiska svaret:

Wget skriver helt enkelt ut mottagna data på stdout. Detta gör att du kan bearbeta svaret med standardkommandoradsverktyg. För att lista några innehåller detta jq [9] för JSON, xsltproc, xidel, xmlstarlet [10] för XML samt csvkit [11] för CSV-format.

Slutsats

Den här artikeln visar olika sätt att skicka frågor till Apache Solr och förklarar hur man behandlar sökresultatet. I nästa del lär du dig hur du använder Apache Solr för att söka i PostgreSQL, ett relationsdatabashanteringssystem.

Om Författarna

Jacqui Kabeta är miljöaktivist, ivrig forskare, tränare och mentor. I flera afrikanska länder har hon arbetat inom IT-industrin och NGO-miljöer.

Frank Hofmann är IT-utvecklare, tränare och författare och föredrar att arbeta från Berlin, Genève och Kapstaden. Medförfattare till Debian Package Management Book tillgänglig från dpmb.org

Länkar och referenser

Bästa spel att spela med handspårning
Oculus Quest introducerade nyligen den fantastiska idén om handspårning utan kontroller. Med ett ständigt ökande antal spel och aktiviteter som utför ...
Hur man visar OSD-överlägg i helskärms Linux-appar och -spel
Att spela helskärmsspel eller använda appar i distraktionsfritt helskärmsläge kan avskärma dig från relevant systeminformation som syns i en panel ell...
Topp 5 spelinspelningskort
Vi har alla sett och älskat streaming av spel på YouTube. PewDiePie, Jakesepticye och Markiplier är bara några av de bästa spelarna som har tjänat mil...