Apache Solr

Apache Solr Een knooppunt instellen

Apache Solr Een knooppunt instellen

Deel 1: Een enkel knooppunt instellen

Tegenwoordig is het elektronisch opslaan van uw documenten of gegevens op een opslagapparaat zowel snel als gemakkelijk, het is ook relatief goedkoop. In gebruik is een bestandsnaamreferentie die bedoeld is om te beschrijven waar het document over gaat. Als alternatief worden gegevens bewaard in een Database Management System (DBMS) zoals PostgreSQL, MariaDB of MongoDB om maar een paar opties te noemen. Verschillende opslagmedia zijn lokaal of op afstand aangesloten op de computer, zoals USB-stick, interne of externe harde schijf, Network Attached Storage (NAS), Cloud Storage of GPU/Flash-gebaseerd, zoals in een Nvidia V100 [10].

Het omgekeerde proces, het vinden van de juiste documenten in een documentenverzameling, is daarentegen nogal complex. Het vereist meestal het foutloos detecteren van het bestandsformaat, het indexeren van het document en het extraheren van de belangrijkste concepten (documentclassificatie). Dit is waar het Apache Solr-framework om de hoek komt kijken. Het biedt een praktische interface om de genoemde stappen uit te voeren - het bouwen van een documentindex, het accepteren van zoekopdrachten, het uitvoeren van de daadwerkelijke zoekopdracht en het retourneren van een zoekresultaat. Apache Solr vormt daarmee de kern voor effectief onderzoek naar een database of documentensilo.

In dit artikel leert u hoe Apache Solr werkt, hoe u een enkel knooppunt instelt, documenten indexeert, een zoekopdracht uitvoert en het resultaat ophaalt.

De vervolgartikelen bouwen hierop voort en daarin bespreken we andere, meer specifieke gebruiksscenario's, zoals het integreren van een PostgreSQL DBMS als gegevensbron of taakverdeling over meerdere knooppunten.

Over het Apache Solr-project

Apache Solr is een zoekmachine-framework gebaseerd op de krachtige Lucene-zoekindexserver [2]. Het is geschreven in Java en wordt onderhouden onder de paraplu van de Apache Software Foundation (ASF) [6]. Het is gratis beschikbaar onder de Apache 2-licentie.

Het onderwerp "Documenten en gegevens opnieuw vinden" speelt een zeer belangrijke rol in de softwarewereld en veel ontwikkelaars zijn er intensief mee bezig. De website Awesomeopensource [4] vermeldt meer dan 150 open-sourceprojecten voor zoekmachines. Vanaf begin 2021 zijn ElasticSearch [8] en Apache Solr/Lucene de twee beste honden als het gaat om het zoeken naar grotere datasets. Het ontwikkelen van je zoekmachine vereist veel kennis, dat doet Frank sinds 2002 met de op Python gebaseerde AdvaS Advanced Search [3] bibliotheek.

Apache Solr instellen:

De installatie en bediening van Apache Solr is niet ingewikkeld, het is gewoon een hele reeks stappen die u moet uitvoeren. Wacht ongeveer 1 uur voor het resultaat van de eerste gegevensquery. Bovendien is Apache Solr niet alleen een hobbyproject maar wordt het ook gebruikt in een professionele omgeving. Daarom is de gekozen besturingssysteemomgeving ontworpen voor langdurig gebruik.

Als basisomgeving voor dit artikel gebruiken we Debian GNU/Linux 11, de aanstaande release van Debian (vanaf begin 2021) en die naar verwachting medio 2021 beschikbaar zal zijn. Voor deze zelfstudie verwachten we dat je het al hebt geïnstalleerd, hetzij als het native systeem, in een virtuele machine zoals VirtualBox of een AWS-container.

Naast de basiscomponenten moet u de volgende softwarepakketten op het systeem installeren:

Deze pakketten zijn standaardcomponenten van Debian GNU/Linux. Als ze nog niet zijn geïnstalleerd, kun je ze in één keer achteraf installeren als gebruiker met beheerdersrechten, bijvoorbeeld root of via sudo, als volgt weergegeven:

# apt-get install curl default-java libcommons-cli-java libxerces2-java libtika-java

Nadat de omgeving is voorbereid, is de 2e stap de installatie van Apache Solr. Vanaf nu is Apache Solr niet beschikbaar als een gewoon Debian-pakket. Daarom is het vereist om Apache Solr 8 . op te halen.8 van de downloadsectie van de projectwebsite [9] eerst. Gebruik de onderstaande wget-opdracht om het op te slaan in de /tmp-map van uw systeem:

$ wget -O /tmp https://downloads.apache.org/lucene/solr/8.8.0/solr-8.8.0.tgz

De schakelaar -O verkort -output-document en laat wget de opgehaalde tar . opslaan.gz-bestand in de opgegeven map. Het archief heeft een omvang van ongeveer 190M. Pak vervolgens het archief uit in de /opt-map met tar. Als resultaat vindt u twee submappen - /opt/solr en /opt/solr-8.8.0, terwijl /opt/solr is ingesteld als een symbolische link naar de laatste. Apache Solr wordt geleverd met een setup-script dat u vervolgens uitvoert, het is als volgt:

# /opt/solr-8.8.0/bin/install_solr_service.sh

Dit resulteert in de creatie van de Linux-gebruiker solr wordt uitgevoerd in de Solr-service plus zijn homedirectory onder /var/solr stelt de Solr-service tot stand, toegevoegd met de bijbehorende knooppunten, en start de Solr-service op poort 8983. Dit zijn de standaardwaarden. Als u er niet tevreden mee bent, kunt u ze tijdens de installatie of zelfs later wijzigen, aangezien het installatiescript overeenkomstige schakelaars accepteert voor instellingsaanpassingen. We raden u aan om de Apache Solr-documentatie met betrekking tot deze parameters te bekijken.

De Solr-software is georganiseerd in de volgende mappen:

Meer in detail kunt u over deze mappen lezen in de Apache Solr-documentatie [12].

Apache Solr beheren:

Apache Solr draait als een service op de achtergrond. U kunt het op twee manieren starten, ofwel met systemctl (eerste regel) als gebruiker met beheerdersrechten of rechtstreeks vanuit de Solr-directory (tweede regel). We vermelden beide terminalopdrachten hieronder:

# systemctl start solr
$ solr/bin/solr start

Het stoppen van Apache Solr gaat op dezelfde manier:

# systemctl stop solr
$ solr/bin/solr stop

Hetzelfde geldt voor het herstarten van de Apache Solr-service:

# systemctl herstart solr
$ solr/bin/solr herstart

Verder kan de status van het Apache Solr-proces als volgt worden weergegeven:

# systemctl status solr
$ solr/bin/solr-status

De uitvoer geeft een overzicht van het servicebestand dat is gestart, zowel de bijbehorende tijdstempel als logberichten. De onderstaande afbeelding laat zien dat de Apache Solr-service is gestart op poort 8983 met proces 632. Het proces loopt 38 minuten met succes.

Om te zien of het Apache Solr-proces actief is, kunt u ook een kruiscontrole gebruiken met het ps-commando in combinatie met grep. Dit beperkt de ps-uitvoer tot alle Apache Solr-processen die momenteel actief zijn.

# ps bijl | grep --color solr

De onderstaande afbeelding laat dit zien voor een enkel proces. U ziet de aanroep van Java die vergezeld gaat van een lijst met parameters, bijvoorbeeld poorten voor geheugengebruik (512M) om te luisteren op 8983 voor query's, 7983 voor stopverzoeken en type verbinding (http).

Gebruikers toevoegen:

De Apache Solr-processen worden uitgevoerd met een specifieke gebruiker met de naam solr. Deze gebruiker is behulpzaam bij het beheren van Solr-processen, het uploaden van gegevens en het verzenden van verzoeken. Bij het instellen heeft de gebruiker solr geen wachtwoord en wordt verwacht dat hij er een heeft om in te loggen om verder te gaan. Stel een wachtwoord in voor de gebruiker solr zoals gebruiker root, het wordt als volgt getoond:

# paswd solr

Solr-administratie:

Apache Solr beheren doe je met behulp van het Solr Dashboard. Dit is toegankelijk via een webbrowser vanaf http://localhost:8983/solr. De onderstaande afbeelding toont het hoofdaanzicht.

Aan de linkerkant ziet u het hoofdmenu dat u naar de subsecties voor logging, beheer van de Solr-cores, de Java-setup en de statusinformatie leidt. Kies de gewenste core met behulp van het keuzevak onder het menu. Aan de rechterkant van het menu wordt de bijbehorende informatie weergegeven. Het menu-item Dashboard toont meer details over het Apache Solr-proces, evenals de huidige belasting en het geheugengebruik.

Houd er rekening mee dat de inhoud van het Dashboard verandert afhankelijk van het aantal Solr-kernen en de documenten die zijn geïndexeerd. Wijzigingen zijn van invloed op zowel de menu-items als de bijbehorende informatie die rechts zichtbaar is.

Begrijpen hoe zoekmachines werken:

Simpel gezegd, zoekmachines analyseren documenten, categoriseren ze en stellen u in staat om te zoeken op basis van hun categorisering. In principe bestaat het proces uit drie fasen, die worden aangeduid als crawlen, indexeren en rangschikken [13].

Kruipen is de eerste fase en beschrijft een proces waarmee nieuwe en bijgewerkte inhoud wordt verzameld. De zoekmachine maakt gebruik van robots die ook bekend staan ​​als spiders of crawlers, vandaar de term crawlen om door beschikbare documenten te gaan.

De tweede fase heet indexeren. De eerder verzamelde inhoud wordt doorzoekbaar gemaakt door de originele documenten om te zetten in een formaat dat de zoekmachine begrijpt. Trefwoorden en concepten worden geëxtraheerd en opgeslagen in (enorme) databases.

De derde fase heet rangschikking en beschrijft het proces van het sorteren van de zoekresultaten op basis van hun relevantie met een zoekopdracht. Het is gebruikelijk om de resultaten in aflopende volgorde weer te geven, zodat het resultaat dat het meest relevant is voor de zoekopdracht van de zoeker eerst komt.

Apache Solr werkt op dezelfde manier als het eerder beschreven proces in drie fasen. Net als de populaire zoekmachine Google, gebruikt Apache Solr een reeks documenten uit verschillende bronnen verzamelen, opslaan en indexeren en maakt ze bijna realtime beschikbaar/doorzoekbaar.

Apache Solr gebruikt verschillende manieren om documenten te indexeren, waaronder de volgende [14]:

  1. Een Index Request Handler gebruiken bij het rechtstreeks uploaden van de documenten naar Solr. Deze documenten moeten de indeling JSON, XML/XSLT of CSV hebben.
  2. De handler voor extractieverzoeken gebruiken (Solr Cell). De documenten moeten in PDF- of Office-indeling zijn, die worden ondersteund door Apache Tika.
  3. De Data Import Handler gebruiken, die gegevens uit een database overbrengt en deze catalogiseert met behulp van kolomnamen. De Data Import Handler haalt gegevens op uit e-mails, RSS-feeds, XML-gegevens, databases en platte tekstbestanden als bronnen.

Een query-handler wordt gebruikt in Apache Solr wanneer een zoekopdracht wordt verzonden. De query-handler analyseert de gegeven query op basis van hetzelfde concept van de index-handler om overeen te komen met de query en eerder geïndexeerde documenten. De overeenkomsten worden gerangschikt op hun geschiktheid of relevantie. Een kort voorbeeld van query's wordt hieronder gedemonstreerd:.

Documenten uploaden:

Omwille van de eenvoud gebruiken we een voorbeeldgegevensset voor het volgende voorbeeld dat al door Apache Solr . wordt geleverd. Het uploaden van documenten wordt gedaan als de gebruiker solr. Stap 1 is het maken van een kern met de naam techproducts (voor een aantal tech items).

$ solr/bin/solr create -c techproducts

Alles is in orde als u het bericht "Nieuwe kern 'techproducten' gemaakt" ziet. Stap 2 is het toevoegen van gegevens (XML-gegevens uit voorbeelddocs) aan de eerder gemaakte kerntechnologieproducten. In gebruik is de toolpost die is geparametriseerd door -c (naam van de kern) en de documenten die moeten worden geüpload.

$ solr/bin/post -c techproducts solr/voorbeeld/voorbeelddocs/*.xml

Dit resulteert in de onderstaande uitvoer en bevat de volledige oproep plus de 14 documenten die zijn geïndexeerd.

Ook toont het Dashboard de wijzigingen. Een nieuw item met de naam techproducts is zichtbaar in het vervolgkeuzemenu aan de linkerkant en het aantal overeenkomstige documenten is aan de rechterkant gewijzigd. Een gedetailleerde weergave van de ruwe datasets is helaas niet mogelijk.

Als de kern/verzameling moet worden verwijderd, gebruik dan de volgende opdracht:

$ solr/bin/solr delete -c techproducts

Gegevens opvragen:

Apache Solr biedt twee interfaces om gegevens op te vragen: via het webgebaseerde Dashboard en de opdrachtregel. We zullen beide methoden hieronder uitleggen:.

Het verzenden van vragen via het Solr-dashboard gaat als volgt:

De opdrachtregel accepteert dezelfde zoekopdracht als in het Dashboard. Het verschil is dat u de naam van de zoekvelden moet kennen. Om dezelfde query als hierboven te verzenden, moet u de volgende opdracht in een terminal uitvoeren:

$ krul
http://localhost:8983/solr/techproducts/query?q=”manu”:”Belkin

De uitvoer is in JSON-formaat, zoals hieronder weergegeven:. Het resultaat bestaat uit een antwoordheader en het daadwerkelijke antwoord. Het antwoord bestaat uit twee datasets.

Afsluiten:

Gefeliciteerd! Je hebt de eerste fase met succes behaald. De basisinfrastructuur is opgezet en je hebt geleerd hoe je documenten uploadt en opvraagt.

In de volgende stap wordt beschreven hoe u de query kunt verfijnen, complexere query's kunt formuleren en de verschillende webformulieren kunt begrijpen die door de Apache Solr-querypagina worden geboden. We zullen ook bespreken hoe u het zoekresultaat kunt nabewerken met behulp van verschillende uitvoerformaten zoals XML, CSV en JSON.

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

Hoe de muis- en touchpad-instellingen te wijzigen met Xinput in Linux
De meeste Linux-distributies worden standaard geleverd met de bibliotheek "libinput" om invoergebeurtenissen op een systeem af te handelen. Het kan in...
Wijs uw muisknoppen anders toe voor verschillende software met X-Mouse Button Control
Misschien heeft u een tool nodig waarmee u de bediening van uw muis kunt veranderen bij elke applicatie die u gebruikt. Als dit het geval is, kunt u e...
Microsoft Sculpt Touch draadloze muis Review
Ik las onlangs over de Microsoft Sculpt Touch draadloze muis en besloot hem te kopen. Nadat ik het een tijdje had gebruikt, besloot ik mijn ervaring e...