Pengenalan Pencarian Hibernate

Banyak aplikasi Web ada untuk menyediakan akses ke sejumlah besar data yang tersimpan dalam pangkalan data hubungan, tetapi apakah cara termudah untuk membolehkan pengguna mencari data tersebut dan mencari apa yang mereka perlukan? Dalam artikel ini, Dr. Xinyu Liu memperkenalkan Hibernate Search, yang mengintegrasikan kemampuan pencarian Lucene yang canggih dengan kerangka pemetaan objek-relasional Hibernate.

Apache Lucene adalah pustaka enjin carian teks penuh berprestasi tinggi yang ditulis di Jawa. Pada mulanya, mungkin tidak jelas mengapa anda memerlukan perkara tersebut - bagaimanapun, data anda disimpan dengan baik dalam pangkalan data hubungan yang baik. Walaupun RDBMS dapat melakukan tugas besar dalam menyediakan operasi CRUD transaksional pada data yang disimpan dalam model hubungan, fungsi carian yang ditentukan dalam SQL tidak selalu dapat memenuhi kedua-dua keperluan fungsional dan tidak berfungsi projek anda. Terdapat sebilangan jenis pertanyaan yang tidak disokong oleh RDBMS secara umum tanpa peluasan vendor:

  • Pertanyaan kabur, di mana "kabur" dan "wuzzy" dianggap sesuai
  • Pertanyaan yang berasal dari perkataan, yang menganggap "ambil", "diambil", dan "diambil" sama
  • Pertanyaan seperti suara, yang menganggap "kucing" dan "kat" sama
  • Pertanyaan sinonim, yang menganggap "lompat," "melompat," dan "lompatan" sama
  • Pertanyaan mengenai jenis data BLOB binari, seperti dokumen PDF, dokumen Microsoft Word atau Excel, atau dokumen HTML dan XML

Lebih mengecewakan, hasil carian SQL tidak dinilai berdasarkan skor relevansi pertandingan. Standard SQL tidak bertujuan untuk pertanyaan teks penuh.

Keupayaan carian Lucene, sebaliknya, tidak terhad. Lucene menangani semua pertanyaan yang baru disebutkan, dan banyak lagi; ia juga membolehkan anda mencari dokumen teks yang serupa dengan dokumen lain melalui pertanyaan jangka panjang-vektornya. Sebagai contoh, anda boleh mencari kandungan sejumlah buku untuk mencarinya dengan kandungan yang serupa dengan Hibernate in Action . Senibina penganalisis di Lucene memanfaatkan kemampuan pengantarabangsaan dan penyetempatan Java yang terpadu, yang menjadikan pertanyaan teks penuh tersedia untuk pelbagai bahasa di seluruh dunia. Lucene memberikan prestasi yang luar biasa melalui beberapa teknik inovatif, seperti indeks terbalik. Laman web Apache Lucene mempunyai senarai tanda aras prestasi yang menunjukkan seberapa baik prestasi dan skala Lucene.

Perhatikan bahawa beberapa vendor pangkalan data melaksanakan fungsi carian teks penuh dalam produk mereka sebagai sambungan SQL. Untuk tahap tertentu, fungsi proprietari ini agak mudah digunakan, tetapi menjejaskan kebolehgunaan aplikasi anda di peringkat pangkalan data. Selain itu, ciri-ciri itu tidak sesuai dengan pengalaman pengguna yang ditawarkan oleh Lucene, dan dalam keadaan yang melampau, prestasi Lucene lebih tinggi.

Hibernate dan API Ketekunan Java

Hibernate adalah perpustakaan pemetaan objek-hubungan (ORM) berprestasi tinggi dan berprestasi tinggi. Sebagai penyelesaian ORM yang tidak mengganggu, Hibernate menyediakan API pertanyaan objek untuk kelas model ketekunan objek Java lama (POJO) biasa dan pengikatan data automatik antara objek dan perwakilan hubungan data ketekunan. Pada hakikatnya, ini membolehkan anda fokus pada pengaturcaraan berorientasikan model domain.

Java Persistence API (JPA) adalah antarmuka pemetaan objek-relasional dan pengurusan ketekunan standard yang ditakrifkan sebagai bagian dari Java EE 5, versi terbaru dari spesifikasi Java perusahaan. Terinspirasi oleh Hibernate, JPA muncul untuk menggantikan model pengaturcaraan kacang entiti yang kontroversial. JPA mempunyai gaya pengaturcaraan POJO dan antara muka pertanyaan objek yang mudah digunakan (JPAQL); satu peningkatan JPA berbanding kacang entiti adalah bahawa anda tidak memerlukan wadah EJB 3 untuk menjalankan aplikasi yang menggunakan API, kerana ia menyokong mod berjalan mandiri (Java SE) dan kendali kontena (Java EE). Penyedia JPA yang popular merangkumi Apache OpenJPA dan Oracle TopLink, serta Hibernate itu sendiri, yang menerapkan spesifikasi JPA melalui modul Hibernate Annotations dan Hibernate EntityManager tambahan. Dalam artikel ini, saya akan gunakanJPA / Hibernate sebagai singkatan bagi kedua-duanya bekerjasama.

Artikel ini memaparkan teknologi Hibernate Search kepada anda melalui contoh aplikasi yang diprogramkan dalam gaya POJO dengan anotasi Spring 2.5 terkini. Sebelum memulakan, anda harus mempunyai pengetahuan asas mengenai Spring, Hibernate / JPA, dan Lucene.