» » Solr: Een Zoekmachine

Solr: Een Zoekmachine

Geplaatst in: Techniek | 0

Solr: Een Zoekmachine++

Recent kondigden we aan dat we onze eigen zoekmachine gaan opzetten. Enige dagen aan onderzoek zijn voorbij en we houden u graag op de hoogte van de voortgang. We kunnen natuurlijk onze geheel eigen zoekmachine bouwen. Dat zou een enorme klus zijn en hoewel het een uitdaging op zich is zou het ook enorm veel tijd opslokken. Gezien ons portfolio zult u mogelijk begrijpen dat we de tijd hiervoor eenvoudigweg niet hebben. We hebben dus wat bestaande opensource zoekmachines onderzocht en besloten om Apache Solr te gaan inzetten. Tevens kan dit document voor u een handleiding zijn om zelf Solr te installeren.

Meerdere Keuzes

Keuzes, solr, lucene, java, C
Keuzes, Keuzes, Keuzes…

In de opensource wereld lijkt het vaak alsof alles ooit al eens gedaan is, zo ook met zoekmachines. Met Google als sprekend voorbeeld is het natuurlijk ook voor veel opensource programmeurs een uitdaging om het beter te doen als Google. In zekere zin is dit ook een beetje onze motivatie om onze eigen zoekmachine te starten.

Solr was al een oude bekende van 3DN. We hebben al voor meerdere van onze clienten als systeembeheerder opgetreden op systemen waarop Solr draait. Laten we er maar direct voor uitkomen; Solr is een Java applicatie en Java is helaas niet onze eerste voorkeur waar het programmeren betreft. Solr was dus niet bepaald onze eerste keuze.

Solr is geboud bovenop Apache Lucene. Lucene is een text indexing en search library geschreven in Java en eigenlijk een soort de-facto standaard. Als 3DN zijn we echter niet alleen in onze aversie tegen Java programmatuur. Er zijn meerdere varianten gemaakt van de Lucene library geschreven in C, C++ en zelf in Python. Wij hebben deze varianten onderzocht, echter het blijkt dat de meeste varianten tijdelijke initiatieven zijn die vaak na enige tijd door de verantwoordelijken worden achtergelaten. Lucene++ is bijvoorbeeld een sneller product maar de releases lopen enige jaren achter op de Java Lucene/Solr releases en in de wereld van zoekmachines zijn veranderingen vaak cruciaal voor de resultaten.

We hebben onze keuze voornamelijk laten afhangen van de eenvoud van installatie van deze Java applicatie op Debian Linux, alsmede door het beschikbaar zijn van een PHP Solr library. PHP is in veel meer gevallen onze voorkeur programmeer omgeving dan JavaDe hieronder beschreven installatie was haast triviaal te noemen.

Installatie Solr op Debian Linux

We kunnen bijzonder kort zijn omtrent de installatie van Solr op Debian Linux 9:

root@gamma:~# apt-get install solr-tomcat

Eigenlijk was bovenstaande regel het enige wat we hoefden te doen om een functionerende installatie van Solr te verrichten. Dat klopt, na bovenstaande regel hadden we een Solr installatie draaiend die te benaderen was via http://server:8080/solr/admin. Na deze initiële installatie volgt natuurlijk nog veel fine-tuning, echter het snelle resultaat was bijzonder hoopgevend.

Voor Debian Linux 9 is er tevens een package beschikbaar in de standaard Debian repository. Deze Solr module voor PHP is volledig gedocumenteerd op de PHP site.Na het installeren van deze module mbv.

root@gamma:~# apt-get install php-solr

en het volgen van wat voorbeeldcode kwamen direct wat van deze fine-tuning aspecten naar voren.

Onderstaande gevolgde voorbeeldcode:

<?php

/* Domain name of the Solr server */
define('SOLR_SERVER_HOSTNAME', 'solr.example.com');

/* Whether or not to run in secure mode */
define('SOLR_SECURE', true);

/* HTTP Port to connection */
define('SOLR_SERVER_PORT', ((SOLR_SECURE) ? 8443 : 8983));

/* HTTP Basic Authentication Username */
define('SOLR_SERVER_USERNAME', 'admin');

/* HTTP Basic Authentication password */
define('SOLR_SERVER_PASSWORD', 'changeit');

/* HTTP connection timeout */
/* This is maximum time in seconds allowed for the http data transfer operation. Default value is 30 seconds */
define('SOLR_SERVER_TIMEOUT', 10);

/* File name to a PEM-formatted private key + private certificate (concatenated in that order) */
define('SOLR_SSL_CERT', 'certs/combo.pem');

/* File name to a PEM-formatted private certificate only */
define('SOLR_SSL_CERT_ONLY', 'certs/solr.crt');

/* File name to a PEM-formatted private key */
define('SOLR_SSL_KEY', 'certs/solr.key');

/* Password for PEM-formatted private key file */
define('SOLR_SSL_KEYPASSWORD', 'StrongAndSecurePassword');

/* Name of file holding one or more CA certificates to verify peer with*/
define('SOLR_SSL_CAINFO', 'certs/cacert.crt');

/* Name of directory holding multiple CA certificates to verify peer with */
define('SOLR_SSL_CAPATH', 'certs/');

?>

toonde al direct dat we hoogstwaarschijnlijk:

  • Solr van een beveiliging willen voorzien mbv. een SSL certificaat.
  • Solr van een beveiliging willen voorzien mbv. een username/wachtwoord

Let wel het bovenstaande heeft betrekking op de solr-php module. Een certificaat dat gebruikt word door de solr-php module is dus een client identification certificate, niet het Solr certificaat. De eerste beveiligingsstap deelt zich dus in twee stappen:

  • Solr zodanig configureren dat het via SSL aangesproken kan worden dmv. het gebruik maken van een eigen certificate
  • Een certificate genereren voor solr-php

Merk verder op:

  • Geen van de TCP poorten 8443 en 8983 zijn poorten die ook daadwerkelijk luisteren na het installeren van Solr op onze server. We zien hier dus waarschijnlijk al wat over het hoofd.

Samenvattend

We hebben in bovenstaand artikel gezien dat hoewel de installatie van Solr erg triviaal is en zelfs de Java VM zich behoorlijk lijkt te gedragen op Debian dat deze triviale installatie slechts het tipje van de ijsberg is. Zaken als SSL certificates en beveiliging van services zijn een specialiteit van 3DN en worden over het algemeen door onze clienten als lastig ervaren. Wanneer uw interesse gewekt is en u graag op de hoogte wilt worden gehouden van de voortgang kunt u zich in onderstaand formulier inschrijven bij onze 3DN Technologie mailinglijst. We beloven dat uw informatie geheim is en niet met derden gedeeld word. Tevens zullen we u geen spam email sturen.

Wanneer u al op voorhand denkt dat dit u boven de pet gaat maar wel graag een eigen zoekmachine wilt inrichten kunt u ons natuurlijk altijd contacteren via onze ZZP pagina. We helpen u graag en tegen schappelijke tarieven.

Related

Googlebot gebruikt geen HTTP/2 Googlebot is Dood. Lang leven de nieuwe Googlebot! Recent heeft 3DN besloten om HTTP/2 te gaan gebruiken op haar websites. Dit besluit kwam niet gehe...
Een Product Bouwen: Systool Product Al jarenlang bouwt 3DN vele scriptjes, programma's en diensten, hulpmiddeltjes die ons in onze rol van freelancer goed van pas komen wanneer ...
Apache en HTTP/2 HTTP/2: Introductie HTTP/2 is een grote sprong vooruit van HTTP/1.0. HTTP/2 is afgeleid van het vroegere experimentele SPDY protocol. Het SPDY protoc...
Tomcat Catalina: Configuratie 3DN HTTP/2 Search Engine: Catalina Recent hebben we drieste plannen gepubliceerd omtrent de competitie die we aangaan met Google. Bij 3DN gebruiken w...

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *