Introduksjon til Spring Data Solr

1. Oversikt

I denne artikkelen, vi vil utforske det grunnleggende i Spring Data Solr på en praktisk måte.

Apache Solr er en åpen kildekode som er klar til å distribuere bedriftens fulltekst-søkemotor. Du kan finne ut mer om funksjonene til Solr på den offisielle nettsiden.

Vi viser hvordan du gjør en enkel Solr-konfigurasjon og selvfølgelig hvordan du kan samhandle med serveren.

Først må vi starte en Solr-server og opprette en kjerne for å lagre data (som Solr som standard vil opprette i skjemløs modus).

2. Vårdata

Akkurat som alle andre Spring Data-prosjekter har Spring Data Solr et klart mål om å fjerne kokerplatekoder, som vi definitivt vil dra nytte av.

2.1. Maven avhengighet

La oss starte med å legge til våren Data Solr avhengighet til vår pom.xml:

 org.springframework.data spring-data-solr 2.0.5.RELEASE 

Du finner de siste avhengighetene her.

2.2. Definere dokumentet

La oss definere et dokument som heter Produkt:

@SolrDocument (solrCoreName = "product") offentlig klasse Produkt {@Id @Indexed (navn = "id", type = "streng") privat streng-id; @Indexed (navn = "navn", type = "streng") privat strengnavn; }

@SolrDocument kommentar indikerer at Produkt klasse er et Solr-dokument og indeksert til kjernenavn produkt. Felter kommentert med @Indexed er indeksert i Solr og vil være søkbare.

2.3. Definere lagringsgrensesnitt

Deretter må vi opprette et lagringsgrensesnitt ved å utvide et depot levert av Spring Data Solr. Vi parametriserer naturlig nok dette med Produkt og String som vår enhets-ID:

offentlig grensesnitt ProductRepository utvider SolrCrudRepository {public List findByName (strengnavn); @Query ("id: *? 0 * ELLER navn: *? 0 *") offentlig side findByCustomQuery (String searchTerm, Pageable pageable); @Query (name = "Product.findByNamedQuery") offentlig side findByNamedQuery (String searchTerm, Pageable pageable); }

Legg merke til hvordan vi definerer tre metoder her, på toppen av API-en som tilbys av SolrCrudRepository. Vi vil snakke om disse i de neste avsnittene.

Vær også oppmerksom på at Product.findByNamedQuery egenskap er definert i Solr-kalt søkefil solr-named-queries.properties i klassesti-mappen:

Product.findByNamedQuery = id: *? 0 * ELLER navn: *? 0 *

2.4. Java-konfigurasjon

Nå skal vi utforske vårkonfigurasjonen av Solr-utholdenhetslaget:

@Configuration @EnableSolrRepositories (basePackages = "com.baeldung.spring.data.solr.repository", calledQueriesLocation = "classpath: solr-named-queries.properties", multicoreSupport = true) @ComponentScan offentlig klasse SolrConfig {@BeanClient solClient) () {returner ny HttpSolrClient ("// localhost: 8983 / solr"); } @Bean offentlig SolrTemplate solrTemplate (SolrClient-klient) kaster Unntak {returner ny SolrTemplate (klient); }}

Vi bruker @EnableSolrRepositories for å skanne pakkene for arkiver. Merk at vi har spesifisert plasseringen til den navngitte spørringsegenskapsfilen og aktivert støtte for flere kjerner.

Hvis flerkjerner ikke er aktivert, vil Spring Data som standard anta at Solr-konfigurasjon er for en enkelt kjerne. Vi aktiverer flerkjerner her, bare for referanse.

3. Indeksering, oppdatering og sletting

For å søke i dokumenter i Solr, bør dokumenter indekseres til Solr-arkivet.

Følgende eksempel indekserer et produktdokument i Solr-arkivet ved å bruke SolrCrudRepository lagre metode:

Produkttelefon = nytt produkt (); phone.setId ("P0001"); phone.setName ("Telefon"); productRepository.save (telefon);

La oss nå hente og oppdatere et dokument:

Produkt hentetProdukt = productRepository.findOne ("P0001"); retrievedProduct.setName ("Smart Phone"); productRepository.save (retrievedProduct);

Dokumenter kan slettes ved å bare ringe slettemetoden:

productRepository.delete (retrievedProduct);

4. Spørring

La oss nå utforske forskjellige spørreteknikker levert av Spring Data Solr API.

4.1. Metode Navn Generering av spørring

Metodebaserte spørringer genereres ved å analysere metodens navn for å generere det forventede spørringen som skal utføres:

offentlig liste findByName (strengnavn);

I vårt depotgrensesnitt har vi det findByName metode som genererer spørring basert på metodens navn:

List retrievedProducts = productRepository.findByName ("Phone");

4.2. Spørring med @Spørsmål Kommentar

Solr-søk kan opprettes ved å ha spørringen i en @Spørsmål kommentar av en metode. I vårt eksempel findByCustomQuery er kommentert med @Spørsmål kommentar:

@Query ("id: *? 0 * ELLER navn: *? 0 *") offentlig Side findByCustomQuery (String searchTerm, Pageable pageable);

La oss bruke denne metoden for å hente dokumenter:

Sideresultat = productRepository.findByCustomQuery ("Telefon", ny PageRequest (0, 10));

Ved å ringe findByCustomQuery (“Telefon”, ny PageRequest (0, 10)) vi får den første siden i produktdokumentene som inneholder ordet “Telefon” i et av feltene id eller Navn.

4.3. Navngitt spørring

Navngitte spørsmål ligner på spørsmål med @Spørsmål merknad unntatt spørringene er deklarert i en egen egenskapsfil:

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

Merk at @Spørsmål merknad er ikke nødvendig hvis nøkkelen (findByNamedQuery) av spørringen i egenskapsfilen samsvarer med metodens navn.

La oss hente noen dokumenter ved hjelp av navngitt søkemetode:

Sideresultat = productRepository.findByNamedQuery ("en", ny PageRequest (0, 10));

5. Konklusjon

Denne artikkelen er en rask og praktisk introduksjon til Spring Data Solr, som dekker den grunnleggende konfigurasjonen, definerer repositories og naturlig spørring.

Og som alltid er eksemplene som brukes her tilgjengelige som et eksempel på prosjekt på Github.


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