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.