Apache Solr

Inleiding tot Apache Solr. Deel 2 Opvragen bij Solr

Inleiding tot Apache Solr. Deel 2 Opvragen bij Solr
Apache Solr [1] is een zoekmachine-framework geschreven in Java en gebaseerd op de Lucene-zoekbibliotheek [6]. In het vorige artikel hebben we Apache Solr opgezet op de binnenkort uit te brengen Debian GNU/Linux 11, een enkele datacore gestart, voorbeeldgegevens geüpload en gedemonstreerd hoe een basiszoekopdracht in de dataset kan worden uitgevoerd met behulp van een eenvoudige vraag.

Dit is een vervolgartikel op het vorige. We zullen bespreken hoe u de zoekopdracht kunt verfijnen, complexere zoekcriteria met verschillende parameters kunt formuleren en de verschillende webformulieren van de Apache Solr-querypagina kunt begrijpen. We zullen ook bespreken hoe u het zoekresultaat kunt nabewerken met behulp van verschillende uitvoerformaten zoals XML, CSV en JSON.

Apache Solr opvragen

Apache Solr is ontworpen als een webtoepassing en service die op de achtergrond draait. Het resultaat is dat elke clienttoepassing met Solr kan communiceren door er query's naar te sturen (de focus van dit artikel), de documentkern te manipuleren door geïndexeerde gegevens toe te voegen, bij te werken en te verwijderen, en kerngegevens te optimaliseren. Er zijn twee opties - via dashboard/webinterface of met behulp van een API door een bijbehorend verzoek te verzenden.

Het is gebruikelijk om de eerste optie voor testdoeleinden en niet voor reguliere toegang. De onderstaande afbeelding toont het Dashboard van de Apache Solr Administration User Interface met de verschillende queryformulieren in de webbrowser Firefox.

Kies eerst in het menu onder het kernselectieveld het menu-item "Query". Vervolgens toont het dashboard verschillende invoervelden als volgt:

Als u op de knop Query uitvoeren klikt, wordt het gewenste verzoek uitgevoerd. Kijk hieronder voor praktische voorbeelden.

als de tweede optie, u kunt een verzoek verzenden met behulp van een API. Dit is een HTTP-verzoek dat door elke toepassing naar Apache Solr kan worden verzonden. Solr verwerkt het verzoek en retourneert een antwoord. Een speciaal geval hiervan is verbinding maken met Apache Solr via Java API. Dit is uitbesteed aan een apart project genaamd SolrJ [7] - een Java API zonder dat een HTTP-verbinding nodig is.

Querysyntaxis

De querysyntaxis wordt het best beschreven in [3] en [5]. De verschillende parameternamen komen direct overeen met de namen van de invoervelden in de hierboven toegelichte formulieren. In de onderstaande tabel staan ​​ze vermeld, plus praktische voorbeelden.

Index van queryparameters

Parameter Omschrijving Voorbeeld
q De belangrijkste queryparameter van Apache Solr - de veldnamen en waarden. Hun overeenkomstscores documenteren naar termen in deze parameter. ID:5
auto's:*adilla*
*:X5
fq Beperk de resultaatset tot de superset-documenten die overeenkomen met het filter, bijvoorbeeld gedefinieerd via Function Range Query Parser model-
id,model
begin Offsets voor paginaresultaten (begin). De standaardwaarde van deze parameter is 0. 5
rijen Offsets voor paginaresultaten (einde). De waarde van deze parameter is standaard 10 15
soort Het specificeert de lijst met velden gescheiden door komma's, op basis waarvan de queryresultaten moeten worden gesorteerd model asc
fl Het specificeert de lijst met velden die moeten worden geretourneerd voor alle documenten in de resultatenset model-
id,model
wt Deze parameter vertegenwoordigt het type antwoordschrijver waarvan we het resultaat wilden bekijken. De waarde hiervan is standaard JSON. json
xml

Zoekopdrachten worden uitgevoerd via HTTP GET-verzoek met de queryreeks in de q-parameter. Onderstaande voorbeelden zullen verduidelijken hoe dit werkt. In gebruik is curl om de query naar Solr te sturen die lokaal is geïnstalleerd.

Bovendien kunt u uw eigen verzoekhandler definiëren om de optionele verzoekparameters naar de queryparser te sturen om te bepalen welke informatie wordt geretourneerd.

Queryparsers

Apache Solr gebruikt een zogenaamde query-parser - een component die uw zoekstring vertaalt naar specifieke instructies voor de zoekmachine. Een query-parser staat tussen u en het document waarnaar u zoekt.

Solr wordt geleverd met een verscheidenheid aan parsertypen die verschillen in de manier waarop een ingediende query wordt afgehandeld. De Standard Query Parser werkt goed voor gestructureerde query's, maar is minder tolerant voor syntaxisfouten. Tegelijkertijd zijn zowel de DisMax als de Extended DisMax Query Parser geoptimaliseerd voor natuurlijke taalachtige zoekopdrachten. Ze zijn ontworpen om eenvoudige woordgroepen die door gebruikers zijn ingevoerd te verwerken en om te zoeken naar afzonderlijke termen in verschillende velden met verschillende wegingen.

Verder biedt Solr ook zogenaamde Function Queries waarmee een functie kan worden gecombineerd met een query om een ​​specifieke relevantiescore te genereren. Deze parsers heten Function Query Parser en Function Range Query Parser. Het onderstaande voorbeeld toont de laatste om alle gegevenssets voor "bmw" (opgeslagen in het gegevensveld make) te kiezen met de modellen van 318 tot 323:

curl http://localhost:8983/solr/cars/query -d '
q=merk:bmw&
fq=model:[318 TOT 323] '

Nabewerking van resultaten

Het verzenden van zoekopdrachten naar Apache Solr is een deel, maar het zoekresultaat van het andere nabewerken. Ten eerste kunt u kiezen tussen verschillende antwoordformaten - van JSON tot XML, CSV en een vereenvoudigd Ruby-formaat. Geef eenvoudig de bijbehorende wt-parameter op in een query. Het onderstaande codevoorbeeld laat dit zien voor het ophalen van de dataset in CSV-indeling voor alle items die curl gebruiken met escaped &:

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

De uitvoer is als volgt een door komma's gescheiden lijst:

Om het resultaat als XML-gegevens te ontvangen, maar alleen de twee uitvoervelden maken en model, voert u de volgende query uit:

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

De uitvoer is anders en bevat zowel de antwoordheader als het daadwerkelijke antwoord:

Wget drukt eenvoudig de ontvangen gegevens af op stdout. Hierdoor kunt u het antwoord nabewerken met behulp van standaard opdrachtregelprogramma's. Om er een paar te noemen, dit bevat jq [9] voor JSON, xsltproc, xidel, xmlstarlet [10] voor XML en csvkit [11] voor CSV-formaat.

Conclusie

Dit artikel toont verschillende manieren om zoekopdrachten naar Apache Solr te sturen en legt uit hoe u het zoekresultaat kunt verwerken. In het volgende deel leert u hoe u Apache Solr gebruikt om te zoeken in PostgreSQL, een relationeel databasebeheersysteem.

Over de Auteurs

Jacqui Kabeta is een milieuactivist, fervent onderzoeker, trainer en mentor. In verschillende Afrikaanse landen heeft ze gewerkt in de IT-industrie en NGO-omgevingen.

Frank Hofmann is een IT-ontwikkelaar, trainer en auteur en werkt het liefst vanuit Berlijn, Genève en Kaapstad. Co-auteur van het Debian Package Management Book verkrijgbaar bij dpmb.org

Links en referenties

Voeg muisbewegingen toe aan Windows 10 met deze gratis tools
In de afgelopen jaren zijn computers en besturingssystemen sterk geëvolueerd. Er was een tijd dat gebruikers opdrachten moesten gebruiken om door best...
Beheer en beheer muisbewegingen tussen meerdere monitoren in Windows 10
Muisbeheer voor twee schermen laat je muisbewegingen tussen meerdere monitoren controleren en configureren door de bewegingen nabij de grens te vertra...
Met WinMouse kunt u de beweging van de muisaanwijzer op Windows-pc aanpassen en verbeteren
Als u de standaardfuncties van uw muisaanwijzer wilt verbeteren, gebruik dan freeware WinMuis. Het voegt meer functies toe om u te helpen het meeste u...