Bevezetés a Spring Data Solr-ba

1. Áttekintés

Ebben a cikkben, feltárjuk a Spring Data Solr alapjait gyakorlati módon.

Az Apache Solr egy nyílt forráskódú, készen áll a vállalati teljes szövegű keresőmotor telepítésére. A Solr funkcióiról többet megtudhat a hivatalos weboldalon.

Megmutatjuk, hogyan kell elvégezni az egyszerű Solr konfigurációt, és természetesen hogyan kell kommunikálni a szerverrel.

Először el kell indítanunk egy Solr kiszolgálót, és létre kell hoznunk egy magot az adatok tárolására (amelyet alapértelmezés szerint a Solr séma nélküli módban hoz létre).

2. Tavaszi adatok

Csakúgy, mint bármely más Spring Data projekt esetében, a Spring Data Solrnak is egyértelmű célja a kazánlap kódok eltávolítása, amelyet mindenképpen ki fogunk használni.

2.1. Maven-függőség

Kezdjük azzal, hogy hozzáadjuk a Spring Data Solr függőséget pom.xml:

 org.springframework.data spring-data-solr 2.0.5.KÖZLEMÉNY 

A legfrissebb függőségeket itt találja.

2.2. A dokumentum meghatározása

Definiáljunk egy nevű dokumentumot Termék:

@SolrDocument (solrCoreName = "product") public class Termék {@Id @Indexed (name = "id", type = "string") private String azonosító; @Indexed (name = "name", type = "string") private String name; }

@SolrDocument kommentár azt jelzi, hogy a Termék osztály egy Solr dokumentum, és a mag nevéhez van indexelve termék. A jelöléssel ellátott mezők @Teljes a Solr-ban vannak indexelve, és kereshetők lesznek.

2.3. Adattár interfész meghatározása

Ezután létre kell hoznunk egy lerakat felületet a Spring Data Solr által biztosított tároló kibővítésével. Természetesen ezt paraméterezzük Termék és Húr mint entitásunk azonosítója:

nyilvános felület A ProductRepository kiterjeszti a SolrCrudRepository {public List findByName (karakterlánc neve); @Query ("id: *? 0 * OR name: *? 0 *") public page findByCustomQuery (String searchTerm, Lapozható lapozható); @Query (name = "Product.findByNamedQuery") nyilvános oldal findByNamedQuery (String searchTerm, lapozható lapozható); }

Figyelje meg, hogyan definiálunk itt három módszert, az API által biztosított SolrCrudRepository. Ezekről a következő néhány szakaszban beszélünk.

Vegye figyelembe azt is, hogy a Product.findByNamedQuery tulajdonság a Solr nevű lekérdezési fájlban van meghatározva solr-named-queries.properties az classpath mappában:

Product.findByNamedQuery = id: *? 0 * VAGY név: *? 0 *

2.4. Java konfiguráció

Most megvizsgáljuk a Solr perzisztencia réteg tavaszi konfigurációját:

@Configuration @EnableSolrRepositories (basePackages = "com.baeldung.spring.data.solr.repository", namedQueriesLocation = "classpath: solr-named-queries.properties", multicoreSupport = true) @ComponentScan public class SolrConfig () {return new HttpSolrClient ("// localhost: 8983 / solr"); } @Bean public SolrTemplate solrTemplate (SolrClient kliens) dobja a Kivételt {return new SolrTemplate (client); }}

Használjuk @EnableSolrRepositories hogy átvizsgálja a csomagokat tárolók számára. Ne feledje, hogy megadtuk a megnevezett lekérdezési tulajdonságfájl helyét, és engedélyeztük a többmagos támogatást.

Ha a többmagos nincs engedélyezve, akkor a Spring Data alapértelmezés szerint azt feltételezi, hogy a Solr konfigurációja egyetlen magra vonatkozik. Itt engedélyezzük a többmagos, csak referenciaként.

3. Indexelés, frissítés és törlés

A dokumentumok Solr-ban történő keresése érdekében a dokumentumokat indexelni kell a Solr-tárházba.

A következő példa egy termékdokumentumot indexel a Solr adattárban, egyszerűen a SolrCrudRepository's mentési módszer:

Termék telefon = új Termék (); phone.setId ("P0001"); phone.setName ("Telefon"); productRepository.save (telefon);

Most nyerjük le és frissítsünk egy dokumentumot:

Product retrievedProduct = productRepository.findOne ("P0001"); retrievedProduct.setName ("Okos telefon"); productRepository.save (retrievedProduct);

A dokumentumok egyszerűen törölhetők a törlési módszer meghívásával:

productRepository.delete (retrievedProduct);

4. Lekérdezés

Most vizsgáljuk meg a Spring Data Solr API által biztosított különböző lekérdezési technikákat.

4.1. Módszer neve Lekérdezés generálása

A metódusnév alapú lekérdezéseket a metódus nevének elemzésével generálják a végrehajtandó várt lekérdezés előállításához:

public List findByName (karakterlánc neve);

A tároló felületünkön van findByName metódus, amely a metódus neve alapján generál lekérdezést:

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

4.2. Lekérdezés vele @Lekérdezés Megjegyzés

Solr keresési lekérdezések úgy hozhatók létre, hogy a lekérdezést a @Lekérdezés egy módszer annotációja. Példánkban findByCustomQuery jelöléssel van ellátva @Lekérdezés kommentár:

@Query ("id: *? 0 * OR name: *? 0 *") public page findByCustomQuery (String searchTerm, Lapozható lapozható);

Használjuk ezt a módszert a dokumentumok lekérésére:

Az oldal eredménye = productRepository.findByCustomQuery ("Telefon", új PageRequest (0, 10));

Azzal, hogy felhívta a findByCustomQuery („Telefon”, új PageRequest (0, 10)) megszerezzük a termékdokumentumok első oldalát, amelynek bármelyik mezőjében szerepel a „Telefon” szó id vagy név.

4.3. Query néven

A megnevezett lekérdezések hasonlóak a @Lekérdezés megjegyzés, kivéve, ha a lekérdezéseket külön tulajdonságfájlban deklarálják:

@Query (name = "Product.findByNamedQuery") nyilvános oldal findByNamedQuery (String searchTerm, lapozható lapozható);

Vegye figyelembe, hogy a @Lekérdezés megjegyzés nem szükséges, ha a kulcs (findByNamedQuery) a tulajdonságfájlban található lekérdezés megegyezik a módszer nevével.

Töltsük le néhány dokumentumot megnevezett lekérdezési módszerrel:

Az oldal eredménye = productRepository.findByNamedQuery ("egy", új PageRequest (0, 10));

5. Következtetés

Ez a cikk egy gyors és praktikus bevezetés a Spring Data Solr programba, amely az alapkonfigurációt, az adattárak meghatározását és a természetes lekérdezéseket tartalmazza.

És mint mindig, az itt használt példák mintaprojektként is elérhetők a Githubon.