Programovanie

Úvod do režimu dlhodobého spánku

Existuje veľa webových aplikácií, ktoré poskytujú prístup k veľkému množstvu údajov uložených v relačnej databáze, ale aký je najjednoduchší spôsob, ako umožniť používateľom prehľadávať tieto údaje a nájsť to, čo potrebujú? V tomto článku Dr. Xinyu Liu predstavuje Hibernate Search, ktoré integruje sofistikované vyhľadávacie schopnosti Lucene so známym rámcom objektovo-relačných máp Hibernate.

Apache Lucene je vysoko výkonná rozšíriteľná knižnica fulltextového vyhľadávacieho nástroja napísaná v prostredí Java. Spočiatku nemusí byť zrejmé, prečo by ste také niečo potrebovali - vaše údaje sú koniec koncov pekne uložené v slušnej relačnej databáze. Aj keď RDBMS dokáže vynikajúco zabezpečiť transakčné operácie CRUD na dátach uložených v relačnom modeli, vyhľadávacie funkcie definované v SQL nie sú vždy schopné splniť funkčné aj nefunkčné požiadavky vašich projektov. Existuje niekoľko typov dotazov, ktoré RDBMS všeobecne nepodporujú bez rozšírenia dodávateľa:

  • Fuzzy dotazy, v ktorých sa výrazy „fuzzy“ a „wuzzy“ považujú za zhody
  • Slovné dotazy, ktoré považujú slová „vziať“, „vzal“ a „vziať“ za identické
  • Zvukové dotazy, ktoré považujú slová „mačka“ a „kat“ za identické
  • Dotazy na synonymá, ktoré považujú slová „skok“, „skok“ a „skok“ za identické
  • Dotazy na binárne dátové typy BLOB, ako sú napríklad dokumenty PDF, dokumenty Microsoft Word alebo Excel, alebo dokumenty HTML a XML

Sklamanejšie je, že výsledky vyhľadávania SQL nie sú zoradené podľa skóre relevantnosti zhody. Norma SQL jednoducho nie je určená na fulltextové dotazovanie.

Možnosti vyhľadávania v Lucene sú na druhej strane neobmedzené. Lucene vybavuje všetky práve spomenuté dotazy a ďalšie; tiež vám umožňuje vyhľadávať textové dokumenty podobné iným dokumentom pomocou pokročilého výrazu vektorový výraz. Môžete napríklad prehľadať obsah mnohých kníh a nájsť jednu s obsahom podobným ako v prípade kníh Hibernácia v akcii. Architektúra analyzátora v Lucene využíva zabudované možnosti internacionalizácie a lokalizácie Javy, vďaka čomu je k dispozícii fulltextový dopyt pre rôzne jazyky po celom svete. Lucene poskytuje vynikajúci výkon prostredníctvom niektorých inovatívnych techník, ako je napríklad obrátený index. Webové stránky Apache Lucene obsahujú zoznam výkonnostných testov, ktoré ukazujú, ako dobre Lucene funguje a aké má mierky.

Upozorňujeme, že niektorí dodávatelia databáz implementujú vo svojich produktoch funkcie fulltextového vyhľadávania ako rozšírenia SQL. Do istej miery sa tieto patentované funkcie používajú pomerne ľahko, ale ohrozujú prenosnosť vašich aplikácií na úrovni databázy. Okrem toho tieto vlastnosti nijako nezodpovedajú užívateľskému zážitku, ktorý Lucene ponúka, a za extrémnych podmienok je výkon Lucene vynikajúci.

Hibernate a Java Persistence API

Hibernate je vysoko výkonná, vyspelá knižnica objektovo-relačných máp (ORM). Ako nerušivé riešenie ORM poskytuje Hibernate API dotazov na objekty pre triedy trvalého modelu jednoduchého starého objektu Java (POJO) a automatické väzby údajov medzi objektom a relačnými reprezentáciami údajov o perzistencii. V podstate vám umožní sústrediť sa na programovanie orientované na doménové modely.

Java Persistence API (JPA) je štandardné objektovo-relačné mapovanie a rozhranie na správu perzistencie definované ako súčasť Java EE 5, najnovšej verzie podnikovej špecifikácie Java. Spoločnosť JPA, ktorá sa vo veľkej miere inšpirovala režimom dlhodobého spánku, nahradila kontroverzný model programovania fazule entity. JPA má ľahko použiteľný štýl programovania POJO a rozhranie pre dotazy na objekty (JPAQL); Jedným vylepšením protokolu JPA v porovnaní s fazuľami entít je, že nepotrebujete kontajner EJB 3 na spustenie aplikácií, ktoré používajú rozhranie API, pretože podporuje režimy bežného samostatného (Java SE) aj kontajnera (Java EE). Medzi populárnych poskytovateľov JPA patria Apache OpenJPA a Oracle TopLink, ako aj samotný Hibernate, ktorý implementuje špecifikáciu JPA prostredníctvom doplnkov Hibernate Annotations a Hibernate EntityManager. V tomto článku použijem JPA / Hibernácia ako skratka pre tých dvoch, ktorí spolupracujú.

Tento článok vám predstavuje technológiu Hibernate Search prostredníctvom vzorovej aplikácie naprogramovanej v štýle POJO s najnovšími anotáciami jari 2.5. Skôr ako začnete, mali by ste mať základné vedomosti o jazykoch Spring, Hibernate / JPA a Lucene.

$config[zx-auto] not found$config[zx-overlay] not found