Ú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.