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:
- Begäranhanterare (qt):
Definiera vilken typ av begäran du vill skicka till Solr. Du kan välja mellan standardförfrågningshanterare “/ select” (fråga indexerad data), “/ update” (uppdatera indexerad data) och “/ delete” (ta bort angivna indexerade data), eller en självdefinierad. - Frågehändelse (q):
Definiera vilka fältnamn och värden som ska väljas. - Filtrera frågor (fq):
Begränsa övermängden av dokument som kan returneras utan att påverka dokumentpoängen. - Sortera ordning (sortera):
Definiera sorteringsordningen för frågeresultaten till antingen stigande eller fallande - Utgångsfönster (start och rader):
Begränsa utdata till de angivna elementen - Fältlista (fl):
Begränsar informationen som ingår i ett frågesvar till en angiven lista med fält. - Utdataformat (wt):
Definiera önskat utdataformat. Standardvärdet är JSON.
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.
- Hämta alla datamängder från kärnbilar curl http: // localhost: 8983 / solr / cars / query?q = *: *
- Hämta alla datauppsättningar från kärnbilarna som har ett ID på 5 curl http: // localhost: 8983 / solr / cars / query?q = id: 5
- Hämta fältmodellen från alla datauppsättningar för kärnbilarna
Alternativ 1 (med flykt &): curl http: // localhost: 8983 / solr / cars / query?q = id: * \ & fl = modellAlternativ 2 (fråga i enkla fästingar):
curl 'http: // localhost: 8983 / solr / cars / query?q = id: * & fl = modell ' - Hämta alla datauppsättningar av kärnbilarna sorterade efter pris i fallande ordning och mata ut endast fälten, modellen och priset (version i enkla kryss): curl http: // localhost: 8983 / solr / cars / query -d '
q = *: * &
sortera = prisbeskrivning &
fl = märke, modell, pris ' - Hämta de fem första datamängderna av kärnbilarna sorterade efter pris i fallande ordning och mata ut fälten fabrikat, modell och pris, endast (version i enkla kryss): curl http: // localhost: 8983 / solr / cars / query - d '
q = *: * &
rader = 5 &
sortera = prisbeskrivning &
fl = märke, modell, pris ' - Hämta de fem första datauppsättningarna av kärnbilarna sorterade efter pris i fallande ordning och mata ut fälten fabrikat, modell och pris plus dess relevanspoäng, endast (version i enkla kryss): curl http: // localhost: 8983 / solr / bilar / fråga -d '
q = *: * &
rader = 5 &
sortera = prisbeskrivning &
fl = märke, modell, pris, poäng ' - Returnera alla lagrade fält samt relevanspoäng: curl http: // localhost: 8983 / solr / cars / query -d '
q = *: * &
fl = *, poäng '
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 = csvUtgå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 = xmlUtgå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
- [1] Apache Solr, https: // lucene.apache.org / solr /
- [2] Frank Hofmann och Jacqui Kabeta: Introduktion till Apache Solr. Del 1, http: // linuxhint.com
- [3] Yonik Seelay: Solr Query Syntax, http: // yonik.com / solr / fråga-syntax /
- [4] Yonik Seelay: Solr Tutorial, http: // yonik.com / solr-tutorial /
- [5] Apache Solr: Frågeformulär, 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 / using-solrj.html
- [8] curl, https: // curl.se /
- [9] jq, https: // github.com / stedolan / jq
- [10] xmlstarlet, http: // xmlstar.sourceforge.netto/
- [11] csvkit, https: // csvkit.läsdoktorer.io / sv / senaste /