Uvod u Hibernate Search

Mnogo web aplikacija postoji za pružanje pristupa obilnim količinama podataka pohranjenih u relacijskoj bazi podataka, ali koji je najlakši način da se korisnicima omogući pretraživanje kroz te podatke i pronalazak onoga što im treba? U ovom članku dr. Xinyu Liu predstavlja Hibernate Search, koja integrira sofisticirane mogućnosti pretraživanja Lucene sa poznatim objektno-relacijskim okvirom mapiranja Hibernate.

Apache Lucene je visokoproizvodljiva, proširiva biblioteka tražilica s punim tekstom napisana na Javi. U početku možda nije očito zašto bi vam takvo što trebalo - uostalom, vaši se podaci lijepo pohranjuju u pristojnu relacijsku bazu podataka. Iako RDBMS može napraviti sjajan posao pružanja transakcijskih CRUD operacija na podacima pohranjenim u relacijskom modelu, funkcije pretraživanja definirane u SQL-u nisu uvijek u stanju zadovoljiti i funkcionalne i nefunkcionalne zahtjeve vaših projekata. Postoji niz vrsta upita koje RDBMS općenito ne podržavaju bez proširenja dobavljača:

  • Neizraziti upiti u kojima se "nejasno" i "nejasno" smatraju podudaranjima
  • Upiti koji proizlaze iz riječi, a koji podrazumijevaju "uzmi", "uzeo" i "uzeo" identičnim
  • Upiti slični zvuku koji smatraju da su "mačka" i "kat" identične
  • Upiti sinonima koji smatraju da su "skok", "skok" i "skok" identični
  • Upiti o binarnim vrstama BLOB podataka, kao što su PDF dokumenti, Microsoft Word ili Excel dokumenti ili HTML i XML dokumenti

Još je razočaravajuće što se rezultati pretraživanja SQL-a ne rangiraju po rezultatima relevantnosti podudaranja. SQL standard jednostavno nije namijenjen postavljanju upita u cijelom tekstu.

S druge strane, mogućnosti pretraživanja lucena su neograničene. Lucene obrađuje sve upravo spomenute upite i još mnogo toga; omogućuje vam i pronalaženje tekstualnih dokumenata sličnih drugim dokumentima kroz napredni upit vektorski pojam. Na primjer, mogli biste pretraživati ​​sadržaj velikog broja knjiga kako biste pronašli knjigu sa sadržajem sličnim onom Hibernate in Action . Arhitektura analizatora u Luceneu koristi Javinu ugrađenu sposobnost internacionalizacije i lokalizacije, što čini cjelovite upite dostupnim za različite jezike širom svijeta. Lucene pruža izvanredne performanse kroz neke inovativne tehnike, poput obrnutog indeksa. Web stranica Apache Lucene sadrži popis mjerila performansi koji pokazuju koliko dobro Lucene radi i skalira se.

Imajte na umu da neki dobavljači baza podataka u svojim proizvodima implementiraju funkcije pretraživanja cjelovitog teksta kao SQL proširenja. Do neke su mjere ove vlasničke funkcije prilično jednostavne za upotrebu, ali ugrožavaju prenosivost vaših aplikacija na razini baze podataka. Osim toga, značajke se ne podudaraju s korisničkim iskustvom koje Lucene nudi, a pod ekstremnim uvjetima Luceneove performanse su superiorne.

Hibernate i Java Persistent API

Hibernate je biblioteka zrelih objektno-relacijskih mapiranja (ORM) visokih performansi. Kao nenametljivo ORM rješenje, Hibernate nudi API-je za objektne upite za klase modela trajnosti starog starog Java objekta (POJO) i automatsko vezivanje podataka između objekta i relacijske reprezentacije podataka o postojanosti. U osnovi, omogućuje vam da se usredotočite na programiranje orijentirano na model domene.

Java Persistent API (JPA) je standardno objektno-relacijsko mapiranje i sučelje za upravljanje postojanošću definirano kao dio Java EE 5, najnovije verzije specifikacije Java za poduzeće. U velikoj mjeri nadahnut hibernacijom, JPA se pojavila da zamijeni kontroverzni model programiranja graha. JPA ima jednostavan za korištenje POJO programski stil i sučelje za upite objekata (JPAQL); jedno poboljšanje JPA u odnosu na grah entiteta jest da vam nije potreban spremnik EJB 3 za pokretanje aplikacija koje koriste API, jer podržava samostalne (Java SE) i pokrenute načine upravljanja kojima upravlja kontejner (Java EE). Popularni JPA pružatelji uključuju Apache OpenJPA i Oracle TopLink, kao i sam Hibernate, koji implementira JPA specifikaciju kroz dodatak Hibernate Annotations i Hibernate EntityManager moduli. U ovom ću članku koristitiJPA / Hibernate kao skraćenica za njih dvoje koji rade zajedno.

Ovaj vam članak predstavlja tehnologiju Hibernate Search putem uzorka aplikacije programirane u POJO stilu s najnovijim bilješkama Spring 2.5. Prije nego što započnete, trebali biste imati osnovno znanje o proljeću, hibernaciji / JPA i luceni.