Programavimas

„Hibernate Search“ įvadas

Yra daugybė žiniatinklio programų, leidžiančių pasiekti daugybę duomenų, saugomų reliacinėje duomenų bazėje, tačiau kaip paprasčiausias būdas suteikti vartotojams galimybę ieškoti tų duomenų ir rasti tai, ko jiems reikia? Šiame straipsnyje daktaras Xinyu Liu pristato „Hibernate Search“, kuri integruoja sudėtingas „Lucene“ paieškos galimybes su gerai pažįstama „Hibernate“ objektų ir santykių žemėlapių sistema.

„Apache Lucene“ yra didelio našumo išplėstinė viso teksto paieškos variklių biblioteka, parašyta „Java“. Iš pradžių gali būti neaišku, kodėl jums reikia tokio dalyko - galų gale, jūsų duomenys yra gražiai saugomi tinkamoje reliacinėje duomenų bazėje. Nors RDBVS gali puikiai atlikti operacijų CRUD operacijas, susijusias su reliaciniame modelyje saugomais duomenimis, SQL nustatytos paieškos funkcijos ne visada gali atitikti funkcinius ir nefunkcinius jūsų projektų reikalavimus. Yra daugybė užklausų tipų, kurių RDBMS paprastai nepalaiko be tiekėjo plėtinių:

  • Apytikslės užklausos, kuriose „fuzzy“ ir „wuzzy“ laikomos atitikmenimis
  • Žodžių kilusios užklausos, kurios laiko „imk“, „paėmė“ ir „paimta“ tapačias
  • Į garsą panašios užklausos, kurios „katę“ ir „kat“ laiko tapačiomis
  • Sinonimų užklausos, kurios laiko „šuolį“, „šuolį“ ir „šuolį“ tapačias
  • Užklausos dėl dvejetainių BLOB duomenų tipų, tokių kaip PDF dokumentai, „Microsoft Word“ ar „Excel“ dokumentai arba HTML ir XML dokumentai

Apmaudžiau, kad SQL paieškos rezultatai nėra reitinguojami pagal atitikties atitikties balus. SQL standartas paprasčiausiai nėra skirtas viso teksto užklausoms.

Kita vertus, „Lucene“ paieškos galimybės yra neribotos. Lucene tvarko visus ką tik minėtus klausimus ir dar daugiau; jis taip pat leidžia jums rasti tekstinius dokumentus, panašius į kitus dokumentus, naudojant išplėstinę terminų-vektorių užklausą. Pvz., Galite ieškoti daugelio knygų turinyje, kad rastumėte knygą, kurios turinys būtų panašus į Hibernate in Action. Analizatoriaus architektūra „Lucene“ naudoja integruotas „Java“ internacionalizavimo ir lokalizavimo galimybes, todėl viso teksto užklausa pasiekiama įvairiomis kalbomis visame pasaulyje. „Lucene“ pasiekia puikų našumą naudodama kai kurias novatoriškas technikas, pavyzdžiui, apverstą indeksą. „Apache Lucene“ svetainėje pateikiamas našumo gairių sąrašas, parodantis, kaip „Lucene“ veikia ir skalės.

Atminkite, kad kai kurie duomenų bazių tiekėjai viso teksto paieškos funkcijas savo produktuose įdiegia kaip SQL plėtinius. Tam tikru laipsniu šias patentuotas funkcijas yra gana paprasta naudoti, tačiau jos kelia pavojų jūsų programų perkeliamumui duomenų bazės lygiu. Be to, funkcijos neatitinka „Lucene“ teikiamos vartotojo patirties, o ekstremaliomis sąlygomis „Lucene“ yra geresnis.

Hibernate ir „Java Persistence“ API

Hibernate yra didelio našumo, subrendusi objekto ir reliacijos susiejimo (ORM) biblioteka. Kaip neįkyrus ORM sprendimas, „Hibernate“ teikia objekto užklausos API paprastų senų „Java“ objektų (POJO) patvarumo modelių klasėms ir automatiniams duomenų susiejimams tarp objekto ir santykiniams atkaklumo duomenų vaizdams. Iš esmės tai leidžia sutelkti dėmesį į domeno modelį orientuotą programavimą.

„Java Persistence API“ (JPA) yra standartinė objekto ir reliacijos susiejimo ir patvarumo valdymo sąsaja, apibrėžta kaip „Java EE 5“, naujausios įmonės „Java“ specifikacijos, dalis. Didžioji Hibernate įkvėpta JPA atsirado siekiant pakeisti prieštaringai vertinamą subjekto pupelių programavimo modelį. JPA turi lengvai naudojamą POJO programavimo stilių ir objektų užklausų sąsają (JPAQL); Vienas JPA, palyginti su subjekto pupelėmis, patobulinimas yra tai, kad norint paleisti programas, naudojančias API, nereikia „EJB 3“ konteinerio, nes jis palaiko tiek atskirus („Java SE“), tiek „konteinerių“ valdomus („Java EE“) režimus. Populiarūs JPA teikėjai yra „Apache OpenJPA“ ir „Oracle TopLink“, taip pat pats „Hibernate“, kuris įgyvendina JPA specifikaciją naudodamas papildomus „Hibernate Annotations“ ir „Hibernate EntityManager“ modulius. Šiame straipsnyje aš naudosiu JPA / žiemos miegas kaip judviejų kartu stenografija.

Šiame straipsnyje pristatoma „Hibernate Search“ technologija naudojant programos pavyzdį, užprogramuotą POJO stiliumi su naujausiomis „Spring 2.5“ anotacijomis. Prieš pradėdami turėtumėte turėti pagrindinių žinių apie pavasarį, užmigdymo / JPA ir Lucene.