Uvod u Spring Data Solr

1. Pregled

U ovom članku, istražit ćemo osnove Spring Data Solr-a na praktičan način.

Apache Solr je otvoreni izvor spreman za implementaciju korporativne tražilice s punim tekstom. Više o značajkama tvrtke Solr možete pronaći na službenoj web stranici.

Pokazat ćemo kako napraviti jednostavnu Solr konfiguraciju i naravno kako komunicirati s poslužiteljem.

Prvo, moramo pokrenuti Solr poslužitelj i stvoriti jezgru za pohranu podataka (koja će prema zadanim postavkama Solr stvarati u načinu bez sheme).

2. Proljetni podaci

Kao i bilo koji drugi projekt Spring Data, Spring Data Solr ima jasan cilj ukloniti šifre uzorka, što ćemo svakako iskoristiti.

2.1. Ovisnost Mavena

Počnimo s dodavanjem ovisnosti Spring Data Solr na našu pom.xml:

 org.springframework.data spring-data-solr 2.0.5.OSLOBOĐENJE 

Najnovije ovisnosti možete pronaći ovdje.

2.2. Definiranje dokumenta

Definirajmo dokument koji se zove Proizvod:

@SolrDocument (solrCoreName = "product") javna klasa Product {@Id @Indexed (name = "id", type = "string") private String id; @Indexed (name = "name", type = "string") private String name; }

@SolrDocument napomena ukazuje na to da Proizvod class je Solr dokument i indeksiran u jezgru pod nazivom proizvod. Polja označena s @Indeksirano indeksiraju se u Solru i bit će dostupni za pretraživanje.

2.3. Definiranje sučelja spremišta

Dalje, moramo stvoriti sučelje spremišta proširujući spremište koje pruža Spring Data Solr. To ćemo prirodno parametrizirati s Proizvod i Niz kao ID našeg entiteta:

javno sučelje ProductRepository proširuje SolrCrudRepository {javni popis findByName (naziv niza); @Query ("id: *? 0 * ILI naziv: *? 0 *") javna stranica findByCustomQuery (String searchTerm, Pageable pageable); @Query (name = "Product.findByNamedQuery") javna stranica findByNamedQuery (String searchTerm, Pageable pageable); }

Primijetite kako ovdje definiramo tri metode, povrh API-ja koji pruža SolrCrudRepository. O njima ćemo razgovarati u sljedećih nekoliko odjeljaka.

Također imajte na umu da Product.findByNamedQuery svojstvo je definirano u datoteci upita imenovanoj Solr solr-named-queries.properties u mapi učiteljske staze:

Product.findByNamedQuery = id: *? 0 * ILI naziv: *? 0 *

2.4. Java konfiguracija

Sada ćemo istražiti proljetnu konfiguraciju Solr-ovog postojanog sloja:

@Configuration @EnableSolrRepositories (basePackages = "com.baeldung.spring.data.solr.repository", namedQueriesLocation = "classpath: solr-named-queries.properties", multicoreSupport = true) @ComponentScan javna klasa SolrConfr public @CCentan () {return new HttpSolrClient ("// localhost: 8983 / solr"); } @Bean public SolrTemplate solrTemplate (klijent SolrClient) baca iznimku {return new SolrTemplate (client); }}

Koristimo @EnableSolrRepositories za skeniranje paketa radi spremišta. Imajte na umu da smo odredili mjesto imenovane datoteke svojstava upita i omogućili podršku za više jezgara.

Ako višejezgreno nije omogućeno, tada će Spring Data pretpostaviti da je Solr konfiguracija za jednu jezgru. Ovdje omogućujemo višejezgre, samo za referencu.

3. Indeksiranje, ažuriranje i brisanje

Da biste pretraživali dokumente u Solru, dokumenti bi trebali biti indeksirani u spremište Solr.

Sljedeći primjer indeksira dokument o proizvodu u spremištu Solr jednostavno pomoću SolrCrudRepository's metoda spremanja:

Telefon proizvoda = novi Proizvod (); phone.setId ("P0001"); phone.setName ("Telefon"); productRepository.save (telefon);

Sada dohvatimo i ažuriramo dokument:

Proizvod retrievedProduct = productRepository.findOne ("P0001"); retrievedProduct.setName ("Pametni telefon"); productRepository.save (retrievedProduct);

Dokumenti se mogu izbrisati jednostavnim pozivom metode brisanja:

productRepository.delete (retrievedProduct);

4. Upit

Istražimo sada različite tehnike upita koje pruža Spring Data Solr API.

4.1. Generacija upita za naziv metode

Upiti zasnovani na nazivu metode generiraju se raščlanjivanjem naziva metode kako bi se generirao očekivani upit za izvršavanje:

javni popis findByName (naziv niza);

U našem sučelju spremišta imamo findByName metoda koja generira upit na temelju naziva metode:

Popis retrievedProducts = productRepository.findByName ("Telefon");

4.2. Upit sa @Query Bilješka

Upiti za pretraživanje Solr mogu se stvoriti postavljanjem upita u @Query anotacija metode. U našem primjeru findByCustomQuery je označeno sa @Query napomena:

@Query ("id: *? 0 * ILI naziv: *? 0 *") javna stranica findByCustomQuery (String searchTerm, Pageable pageable);

Upotrijebimo ovu metodu za dohvat dokumenata:

Rezultat stranice = productRepository.findByCustomQuery ("Telefon", novi zahtjev stranice (0, 10));

Pozivanjem findByCustomQuery („Telefon“, novi zahtjev stranice (0, 10)) dobivamo prvu stranicu dokumenata o proizvodu koja sadrži riječ "Telefon" u bilo kojem od njegovih polja iskaznica ili Ime.

4.3. Nazvani upit

Imenovani upiti slični su upitima s @Query napomena osim što su upiti deklarirani u zasebnoj datoteci svojstava:

@Query (name = "Product.findByNamedQuery") javna stranica findByNamedQuery (String searchTerm, Pageable pageable);

Imajte na umu da @Query napomena nije potrebna ako je ključ (findByNamedQuery) upita u datoteci svojstava podudara se s nazivom metode.

Dohvatimo neke dokumente pomoću imenovane metode upita:

Rezultat stranice = productRepository.findByNamedQuery ("jedan", novi PageRequest (0, 10));

5. Zaključak

Ovaj je članak brz i praktičan uvod u Spring Data Solr, koji pokriva osnovnu konfiguraciju, definiranje spremišta i prirodno postavljanje upita.

I kao i uvijek, ovdje korišteni primjeri dostupni su kao ogledni projekt na Githubu.


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