Intern bij Transfer is er een applicatie genaamd Tracsy waar alle medewerkers hun kennis en ervaring bijhouden. Dit is op de eerste plaats bedoeld om snel een actuele CV uit te kunnen draaien en naar de klant te sturen.
In een bedrijf als Transfer met meer dan 100 medewerkers levert dit meer informatie op dan managers en recruiters ten alle tijden paraat kunnen houden. Dit heeft als gevolg dat als er een opdracht binnenkomt niet altijd meteen met zekerheid ingeschat kan worden of iemand met de juiste kennis hiervoor beschikbaar is. Dit vraagt om functionaliteit waarin snel en eenvoudig personen opgezocht kunnen worden met specifieke kennis. Dit is in de applicatie gebouwd met Hibernate Search.
Hibernate Search kwam bij de bouwers van Tracsy aan het licht op J-Fall 2010. Er werd een presentatie gegeven waarin werd gedemonstreerd hoe je er Google achtige zoekfunctionaliteit mee kunt bouwen. Dit kwam overtuigend over en met name de beloofde performance was erg hoog. Dit was een groot voordeel aangezien zoekfunctionaliteit met andere technologie vaak erg traag is, denk aan de standaard windows zoekfunctie.
Hibernate Search dankt de goede performance aan het gebruik van de full text search engine Lucene. Lucene indexeert alle data in index-bestanden op de schijf, deze worden doorzocht om matches te vinden. Dit werkt razendsnel omdat er geen communicatie met de database nodig is. Alle datamutaties, (toevoegingen, wijzigingen en veranderingen) worden meteen automatisch in de indexen aangepast. Alleen alle reeds bestaande data dient eenmalig geïndexeerd te worden. Hier heeft Hibernate Search ook snelle functies voor en door zoveel mogelijk data tegelijk uit de database op te vragen kan binnen een minuut alle informatie van 100 medewerkers geïndexeerd worden.
Echter is er wel een belangrijk nadeel wat goed in de gaten gehouden moet worden. Aanpassingen van de data buiten de applicatie om worden niet automatisch in de indexen meegenomen. Indien dit het geval is, moet er wel eens in de zoveel tijd geherindexeerd worden. Via Tracsy kunnen bijvoorbeeld geen medewerkers worden toegevoegd, dus een medewerker die na de laatste keer (her)indexeren is toegevoegd komt niet omhoog indien hij via zijn naam wordt opgezocht. Om dit op te lossen is inmiddels een knop gemaakt waarmee specifieke gebruikers Tracsy de opdracht kunnen geven tot herindexeren.
Om Hibernate Search te kunnen gebruiken dient de applicatie al Hibernate te gebruiken voor communicatie met de database, dit was bij Tracsy al het geval, dus de keuze was snel gemaakt.
Het enige wat naast Hibernate nog nodig is om Hibernate Search in de applicatie als te kunnen gebruiken zijn:
- Extra libraries, gratis te downloaden.
- Toevoegen van annotaties bij de java objecten die overeenkomen met de database tabellen om aan te geven dat er op gezocht moet kunnen worden.
- Een toevoeging bij de Hibernate configuratie waarmee aangegeven wordt dat de indexen op een bepaalde plek opgeslagen dienen te worden.