Úvod do jarných riešení údajov

1. Prehľad

V tomto článku preskúmame základy Spring Data Solr praktickým spôsobom.

Apache Solr je otvorený zdroj pripravený na nasadenie podnikového fulltextového vyhľadávacieho nástroja. Viac informácií o vlastnostiach systému Solr nájdete na oficiálnych webových stránkach.

Ukážeme si, ako urobiť jednoduchú konfiguráciu Solr a samozrejme, ako komunikovať so serverom.

Najskôr musíme spustiť server Solr a vytvoriť jadro na ukladanie údajov (ktoré Solr predvolene vytvorí v režime bez schémy).

2. Údaje o jari

Rovnako ako každý iný projekt Spring Data, má Spring Data Solr jasný cieľ odstrániť štandardné kódy, čo určite využijeme.

2.1. Maven závislosť

Začnime tým, že k našej pridáme závislosť Spring Data Solr pom.xml:

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

Najnovšie závislosti nájdete tu.

2.2. Definovanie dokumentu

Definujme dokument s názvom Výrobok:

@SolrDocument (solrCoreName = "produkt") verejná trieda Produkt {@Id @Indexed (name = "id", type = "string") private String id; @Indexed (name = "name", type = "string") private String name; }

@SolrDocument anotácia naznačuje, že Výrobok trieda je dokument Solr a indexovaný na jadro s názvom výrobok. Polia s poznámkou @Indexed sú indexované v službe Solr a bude ich možné prehľadávať.

2.3. Definovanie rozhrania úložiska

Ďalej musíme vytvoriť rozhranie úložiska rozšírením úložiska poskytovaného Spring Data Solr. Prirodzene to parametrizujeme Výrobok a String ako naše ID entity:

verejné rozhranie ProductRepository rozširuje SolrCrudRepository {verejný zoznam findByName (názov reťazca); @Query ("id: *? 0 * ALEBO názov: *? 0 *") verejná stránka findByCustomQuery (reťazec searchTerm, stránkovateľné stránkovateľné); @Query (name = "Product.findByNamedQuery") verejná stránka findByNamedQuery (reťazec searchTerm, stránkovateľné stránkovateľné); }

Všimnite si, ako tu definujeme tri metódy, navyše k API, ktoré poskytuje SolrCrudRepository. O tých si povieme v nasledujúcich niekoľkých častiach.

Upozorňujeme tiež, že Product.findByNamedQuery vlastnosť je definovaná v súbore pomenovaného dotazu Solr solr-named-queries.properties v priečinku classpath:

Product.findByNamedQuery = id: *? 0 * ALEBO názov: *? 0 *

2.4. Konfigurácia Java

Teraz preskúmame jarnú konfiguráciu vrstvy vytrvalosti Solr:

@Configuration @EnableSolrRepositories (basePackages = "com.baeldung.spring.data.solr.repository", namedQueriesLocation = "classpath: solr-named-queries.properties", multicoreSupport = true) @ComponentScan verejná trieda SolrConfig {@Bean public SolrConfig () {return new HttpSolrClient ("// localhost: 8983 / solr"); } @Bean public SolrTemplate solrTemplate (klient SolrClient) vyvolá výnimku {vrátiť nový SolrTemplate (klient); }}

Používame @EnableSolrRepositories na skenovanie balíkov kvôli úložiskám. Upozorňujeme, že sme určili umiestnenie pomenovaného súboru vlastností dotazu a povolili sme podporu viacerých jadier.

Ak nie je povolené viacjadro, potom bude Spring Data predvolene predpokladať, že konfigurácia Solr je pre jedno jadro. Povoľujeme tu viacjadro, len pre informáciu.

3. Indexovanie, aktualizácia a mazanie

Ak chcete prehľadávať dokumenty v službe Solr, mali by sa dokumenty indexovať v úložisku Solr.

Nasledujúci príklad indexuje produktový dokument v úložisku Solr jednoducho pomocou SolrCrudRepository's metóda uloženia:

Produktový telefón = nový produkt (); phone.setId ("P0001"); phone.setName ("Telefón"); productRepository.save (telefón);

Teraz poďme načítať a aktualizovať dokument:

Produkt retrievedProduct = productRepository.findOne ("P0001"); retrievedProduct.setName ("inteligentný telefón"); productRepository.save (retrievedProduct);

Dokumenty je možné mazať jednoduchým volaním metódy mazania:

productRepository.delete (retrievedProduct);

4. Dopytovanie

Poďme teraz preskúmať rôzne techniky dotazovania poskytované rozhraním Spring Data Solr API.

4.1. Generovanie dotazu na názov metódy

Dotazy založené na názve metódy sa generujú analýzou názvu metódy na vygenerovanie očakávaného vykonania dotazu:

verejný zoznam findByName (názov reťazca);

V našom rozhraní úložiska máme findByName metóda, ktorá generuje dopyt na základe názvu metódy:

Zoznam retrievedProducts = productRepository.findByName ("telefón");

4.2. Dotaz s @Dopyt Anotácia

Vyhľadávacie dotazy solr je možné vytvoriť dotazom v a @Dopyt anotácia metódy. V našom príklade findByCustomQuery je anotovaný s @Dopyt anotácia:

@Query ("id: *? 0 * ALEBO názov: *? 0 *") verejná stránka findByCustomQuery (reťazec searchTerm, stránkovateľné stránkovateľné);

Použime túto metódu na získanie dokumentov:

Výsledok stránky = productRepository.findByCustomQuery ("Telefón", nový PageRequest (0, 10));

Zavolaním na findByCustomQuery („Telefón“, nový PageRequest (0, 10)) získame prvú stránku dokumentácie k produktu, ktorá v ktoromkoľvek z jej polí obsahuje slovo „Telefón“ id alebo názov.

4.3. Pomenovaný dopyt

Pomenované dotazy sú podobné dotazom s @Dopyt anotácia okrem toho, že dotazy sú deklarované v samostatnom súbore vlastností:

@Query (name = "Product.findByNamedQuery") verejná stránka findByNamedQuery (reťazec searchTerm, stránkovateľné stránkovateľné);

Všimnite si, že @Dopyt anotácia sa nevyžaduje, ak je kľúč (findByNamedQuery) dotazu v súbore vlastností sa zhoduje s názvom metódy.

Poďme načítať niektoré dokumenty pomocou metódy pomenovaného dotazu:

Výsledok stránky = productRepository.findByNamedQuery ("jeden", nový PageRequest (0, 10));

5. Záver

Tento článok predstavuje rýchly a praktický úvod do Spring Data Solr, ktorý sa zaoberá základnou konfiguráciou, definovaním úložísk a prirodzeným dotazovaním.

A ako vždy, tu použité príklady sú k dispozícii ako ukážkový projekt na Githube.


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