Programmēšana

Ievads hibernācijas meklēšanā

Daudzas tīmekļa lietojumprogrammas pastāv, lai nodrošinātu piekļuvi lielam datu apjomam, kas tiek glabāts relāciju datu bāzē, taču kā vienkāršākais veids ir ļaut lietotājiem meklēt, izmantojot šos datus un atrodot nepieciešamo? Šajā rakstā Dr Xinyu Liu iepazīstina ar Hibernate Search, kas integrē Lucene izsmalcinātās meklēšanas iespējas ar Hibernate pazīstamo objektu un relāciju kartēšanas sistēmu.

Apache Lucene ir augstas veiktspējas, paplašināma pilna teksta meklētājprogrammu bibliotēka, kas rakstīta Java valodā. Sākumā var nebūt skaidrs, kāpēc jums tāda vajadzīga - galu galā jūsu dati ir labi saglabāti pienācīgā relāciju datu bāzē. Lai gan RDBMS var lieliski paveikt darījumu CRUD operāciju nodrošināšanu ar datiem, kas saglabāti relāciju modelī, SQL definētās meklēšanas funkcijas ne vienmēr spēj izpildīt gan jūsu projektu funkcionālās, gan nefunkcionālās prasības. Pastāv vairāki vaicājumu veidi, kurus RDBMS parasti neatbalsta bez piegādātāja paplašinājumiem:

  • Neskaidri vaicājumi, kuros “izplūdušie” un “izplūdušie” tiek uzskatīti par atbilstošiem
  • Vārdu izrietošie vaicājumi, kas uzskata "ņemt", "paņēma" un "ņemti" par identiskiem
  • Skaņu līdzīgi vaicājumi, kas “kaķi” un “kat” uzskata par identiskiem
  • Sinonīmu vaicājumi, kas uzskata, ka “lēciens”, “lēciens” un “lēciens” ir identiski
  • Vaicājumi par bināriem BLOB datu tipiem, piemēram, PDF dokumenti, Microsoft Word vai Excel dokumenti vai HTML un XML dokumenti

Neapmierinošāk ir tas, ka SQL meklēšanas rezultāti netiek sakārtoti pēc atbilstības rādītājiem. SQL standarts vienkārši nav paredzēts vaicājumiem ar pilnu tekstu.

Savukārt Lucene meklēšanas iespējas ir neierobežotas. Lucene apstrādā visus tikko minētos jautājumus un vēl vairāk; tas arī ļauj jums atrast teksta dokumentus, kas līdzīgi citiem dokumentiem, izmantojot tā uzlaboto terminu-vektoru vaicājumu. Piemēram, jūs varētu meklēt vairāku grāmatu saturu, lai atrastu grāmatu, kuras saturs būtu līdzīgs tai Pārziemot darbībā. Lucene analizatora arhitektūra izmanto Java iebūvētās internacionalizācijas un lokalizācijas iespējas, kas padara pilna teksta vaicājumus pieejamus dažādām valodām visā pasaulē. Lucene nodrošina izcilu sniegumu, izmantojot dažas novatoriskas metodes, piemēram, apgrieztu indeksu. Apache Lucene vietnē ir snieguma etalonu saraksts, kas parāda Lucene veiktspēju un mērogus.

Ņemiet vērā, ka daži datu bāzu pārdevēji savos produktos kā pilnveidojumu ievieš pilna teksta meklēšanas funkcijas. Zināmā mērā šīs patentētās funkcijas ir diezgan viegli lietojamas, taču tās apdraud jūsu lietojumprogrammu pārnesamību datu bāzes līmenī. Turklāt funkcijas neatbilst Lucene piedāvātajai lietotāja pieredzei, un ekstremālos apstākļos Lucene veiktspēja ir pārāka.

Hibernācijas un Java noturības API

Hibernate ir augstas veiktspējas, nobriedusi objektu relāciju kartēšanas (ORM) bibliotēka. Kā neuzbāzīgs ORM risinājums Hibernate nodrošina objektu vaicājumu API vienkāršu veco Java objektu (POJO) noturības modeļu klasēm un automātisku datu sasaisti starp objektu un noturības datu relāciju attēlojumu. Būtībā tas ļauj koncentrēties uz domēna modeļiem orientētu programmēšanu.

Java noturības API (JPA) ir standarta objektu-relāciju kartēšanas un noturības pārvaldības saskarne, kas definēta kā daļa no Java EE 5, uzņēmuma Java specifikācijas jaunākās versijas. Lielā mērā Hibernate iedvesmots, APA parādījās, lai aizstātu pretrunīgi vērtēto entītijas pupiņu programmēšanas modeli. JPA ir ērti lietojams POJO programmēšanas stils un objektu vaicājumu saskarne (JPAQL); viens JPA uzlabojums salīdzinājumā ar entītijas pupiņām ir tāds, ka, lai palaistu lietojumprogrammas, kas izmanto API, jums nav nepieciešams EJB 3 konteiners, jo tas atbalsta gan atsevišķus (Java SE), gan konteineru pārvaldītus (Java EE) darbības režīmus. Pie populāriem JPA nodrošinātājiem pieder Apache OpenJPA un Oracle TopLink, kā arī pati Hibernate, kas ievieš JPA specifikāciju, izmantojot papildierīces Hibernate Annotations un Hibernate EntityManager. Šajā rakstā es to izmantošu JPA / pārziemot kā abu kopdarbības stenogrāfs.

Šajā rakstā jums tiek parādīta hibernētās meklēšanas tehnoloģija, izmantojot POJO stilā ieprogrammētu lietojumprogrammas paraugu ar jaunākajām pavasara 2.5 anotācijām. Pirms sākat, jums vajadzētu būt pamatzināšanām par Spring, Hibernate / JPA un Lucene.