Ohjelmointi

Johdanto horrostilaan

Monet verkkosovellukset tarjoavat pääsyn suureen määrään relaatiotietokantaan tallennettuja tietoja, mutta mikä on helpoin tapa antaa käyttäjille mahdollisuus etsiä kyseisiä tietoja ja löytää tarvitsemansa? Tässä artikkelissa tohtori Xinyu Liu esittelee horrostilan haun, joka integroi Lucenen hienostuneet hakuominaisuudet Hibernaten tuttuun objektisuhdekartoituskehykseen.

Apache Lucene on korkean suorituskyvyn, laajennettava Java-kielellä kirjoitettu kokotekstinen hakukirjasto. Aluksi ei välttämättä ole selvää, miksi tarvitset sellaista - loppujen lopuksi tietosi tallennetaan hienosti kunnolliseen relaatiotietokantaan. Vaikka RDBMS voi tehdä suurta työtä tarjoamalla transaktiotapahtumia relaatiomalliin tallennettuihin tietoihin, SQL: ssä määritellyt hakutoiminnot eivät aina kykene vastaamaan projektien toiminnallisia ja ei-toiminnallisia vaatimuksia. On olemassa useita kyselytyyppejä, joita RDBMS: t eivät yleensä tue ilman toimittajan laajennuksia:

  • Fuzzy-kyselyt, joissa "fuzzy" ja "wuzzy" katsotaan vastaaviksi
  • Sanakyselyt, jotka pitävät "ota", "veivät" ja "vei" identtisinä
  • Ääniä muistuttavat kyselyt, jotka pitävät "kissa" ja "kat" identtisinä
  • Synonyymikyselyt, jotka pitävät "hypätä", "hypätä" ja "hypätä" identtisinä
  • Kyselyt binaarisista BLOB-tietotyypeistä, kuten PDF-dokumentit, Microsoft Word- tai Excel-asiakirjat tai HTML- ja XML-asiakirjat

Pettymyksellisempää on, että SQL-hakutuloksia ei luokitella vastaavuustulosten perusteella. SQL-standardia ei yksinkertaisesti ole tarkoitettu kokotekstikyselyyn.

Toisaalta Lucene-hakutoiminnot ovat rajattomat. Lucene käsittelee kaikki juuri mainitut kyselyt ja paljon muuta; Sen avulla voit myös löytää muita asiakirjoja muistuttavia tekstidokumentteja kehittyneen termi-vektorikyselyn avulla. Voit esimerkiksi etsiä useiden kirjojen sisällöstä löytääksesi kirjoja, joiden sisältö on samanlainen kuin Lepotila toiminnassa. Lucenen analysaattoriarkkitehtuuri hyödyntää Javan sisäisiä kansainvälistymis- ja lokalisointimahdollisuuksia, mikä tekee kokotekstikyselyn saataville eri kielille maailmanlaajuisesti. Lucene tarjoaa erinomaisen suorituskyvyn innovatiivisilla tekniikoilla, kuten käänteisellä indeksillä. Apache Lucene -verkkosivusto sisältää luettelon suorituskyvyn vertailuarvoista, jotka osoittavat Lucenen suorituskyvyn ja asteikot.

Huomaa, että jotkut tietokantatoimittajat toteuttavat tuotteissaan koko tekstin hakutoiminnot SQL-laajennuksina. Jossakin määrin näitä omistettuja toimintoja on melko helppo käyttää, mutta ne vaarantavat sovellusten siirrettävyyden tietokantatasolla. Lisäksi ominaisuudet eivät sovi Lucenen käyttökokemukseen, ja äärimmäisissä olosuhteissa Lucenen suorituskyky on parempi.

Lepotila ja Java Persistence -sovellusliittymä

Hibernate on korkean suorituskyvyn, kypsä esineiden relaatiokartoituskirjasto (ORM). Ei-tunkeilevana ORM-ratkaisuna Hibernate tarjoaa objektikysely-sovellusliittymät tavallisten vanhojen Java-objektien (POJO) pysyvyysmalliluokille ja automaattisille datan sidonnoille objektin välillä ja pysyvyysdatan relaatioesityksille. Pohjimmiltaan sen avulla voit keskittyä toimialueiden malliin suuntautuvaan ohjelmointiin.

Java Persistence API (JPA) on tavallinen objekti-relaatiokartoitus ja pysyvyyden hallinta -käyttöliittymä, joka on määritelty osana Java EE 5: tä, joka on yrityksen Java-spesifikaation uusin versio. Suurelta osin horrostilan innoittamana JPA nousi korvaamaan kiistanalaisen entisöpapujen ohjelmointimallin. JPA: lla on helppokäyttöinen POJO-ohjelmointityyli ja objektikyselyliittymä (JPAQL); yksi JPA-parannus entisöintipapuihin verrattuna on, että et tarvitse EJB 3 -säiliötä sovellusliittymää käyttävien sovellusten ajamiseksi, koska se tukee sekä erillisiä (Java SE) että konttiohjattuja (Java EE) käyttötiloja. Suosittuja JPA-palveluntarjoajia ovat Apache OpenJPA ja Oracle TopLink sekä itse horrostila, joka toteuttaa JPA-spesifikaation horrostilan merkintöjen ja Hibernate EntityManager -moduulien avulla. Tässä artikkelissa käytän JPA / horrostila lyhenteeksi molemmille, jotka työskentelevät yhdessä.

Tämä artikkeli esittelee horrostilan hakutekniikan sinulle POJO-tyyliin ohjelmoidun mallisovelluksen avulla, jossa on viimeisimmät kevään 2.5 merkinnät. Ennen aloittamista sinulla on oltava perustiedot Springistä, Hibernate / JPA ja Lucene.