Sprievodca riešením v Jave pomocou Apache SolrJ

1. Prehľad

Apache Solr je open-source vyhľadávacia platforma postavená na vrchole Lucene. Apache SolrJ je klient spoločnosti Solr založený na prostredí Java, ktorý poskytuje rozhrania pre hlavné funkcie vyhľadávania, ako je indexovanie, dopytovanie a mazanie dokumentov.

V tomto článku sa chystáme preskúmať ako komunikovať so serverom Apache Solr pomocou SolrJ.

2. Inštalácia

Informácie o inštalácii servera Solr na vaše zariadenie nájdete v Sprievodcovi rýchlym spustením Solr.

Proces inštalácie je jednoduchý - stačí stiahnuť balíček zip / tar, rozbaliť obsah a server spustiť z príkazového riadku. V tomto článku vytvoríme server Solr s jadrom s názvom „bigboxstore“:

bin / solr start bin / solr create -c 'bigboxstore'

Podľa predvoleného nastavenia Solr počúva port 8983 pre prichádzajúce dotazy HTTP. Úspešnosť spustenia môžete overiť otvorením // localhost: 8983 / solr / # / bigboxstore URL v prehliadači a pri sledovaní panela solr.

3. Konfigurácia Maven

Teraz, keď máme náš server Solr funkčný, poďme priamo k Java klientovi SolrJ. Ak chcete vo svojom projekte použiť SolrJ, budete musieť mať vo svojom priečinku deklarovanú nasledujúcu závislosť Maven pom.xml spis:

 org.apache.solr solr-solrj 6.4.0 

Vždy môžete nájsť najnovšiu verziu hostenú v Maven Central.

4. Apache SolrJ Java API

Poďme iniciovať klienta SolrJ pripojením k nášmu serveru Solr:

Reťazec urlString = "// localhost: 8983 / solr / bigboxstore"; HttpSolrClient solr = nový HttpSolrClient.Builder (urlString) .build (); solr.setParser (nový XMLResponseParser ());

Poznámka: SolrJ používa skôr binárny formát ako XML, ako predvolený formát odpovede. Kvôli kompatibilite s Solr sa vyžaduje výslovné vyvolanie setParser () do XML, ako je uvedené vyššie. Viac podrobností nájdete tu.

4.1. Indexovanie dokumentov

Definujeme údaje, ktoré sa majú indexovať, pomocou a SolrInputDocument a pridajte ju do nášho indexu pomocou pridať () metóda:

SolrInputDocument document = nový SolrInputDocument (); document.addField ("id", "123456"); document.addField ("názov", "umývačka riadu Kenmore"); document.addField ("cena", "599,99"); solr.add (dokument); solr.commit ();

Poznámka: Akákoľvek akcia, ktorá upraví databázu Solr, si vyžaduje, aby akcia nasledovala spáchať ().

4.2. Indexovanie pomocou fazule

Dokumenty Solr môžete indexovať aj pomocou fazule. Definujme ProductBean, ktorého vlastnosti sú anotované znakom @Lúka:

verejná trieda ProductBean {ID reťazca; Názov reťazca; Cena reťazca; @Field ("id") chránený void setId (reťazec id) {this.id = id; } @Field ("name") chránený void setName (názov reťazca) {this.name = name; } @Field ("cena") chránený neplatný setPrice (cena reťazca) {this.price = cena; } // vynechávače a konštruktor pre priestor}

Potom pridáme fazuľu do nášho indexu:

solrClient.addBean (nový ProductBean ("888", "Apple iPhone 6s", "299,99")); solrClient.commit ();

4.3. Dopytovanie indexovaných dokumentov podľa poľa a id

Overme, či je náš dokument pridaný pomocou SolrQuery na dopyt na našom serveri Solr.

The QueryResponse zo servera bude obsahovať zoznam SolrDocument objekty zodpovedajúce ľubovoľnému dotazu s formátom pole: hodnota. V tomto príklade dopytujeme podľa ceny:

SolrQuery dotaz = nový SolrQuery (); query.set ("q", "cena: 599,99"); QueryResponse response = solr.query (dopyt); SolrDocumentList docList = response.getResults (); assertEquals (docList.getNumFound (), 1); pre (SolrDocument doc: docList) {assertEquals ((String) doc.getFieldValue ("id"), "123456"); assertEquals ((Double) doc.getFieldValue ("price"), (Double) 599,99); }

Jednoduchšou možnosťou je dotazovať sa podľa Id použitím getById (). ktorý v prípade nájdenia zhody vráti iba jeden dokument:

SolrDocument doc = solr.getById ("123456"); assertEquals ((String) doc.getFieldValue ("meno"), "Kenmore umývačka riadu"); assertEquals ((Double) doc.getFieldValue ("price"), (Double) 599,99);

4.4. Mazanie dokumentov

Ak chceme odstrániť dokument z indexu, môžeme použiť deleteById () a overte, či bolo odstránené:

solr.deleteById ("123456"); solr.commit (); SolrQuery query = nový SolrQuery (); query.set ("q", "id: 123456"); QueryResponse response = solr.query (dopyt); SolrDocumentList docList = response.getResults (); assertEquals (docList.getNumFound (), 0);

Máme tiež možnosť deleteByQuery (), tak skúsme vymazať akýkoľvek dokument s konkrétnym názvom:

solr.deleteByQuery ("meno: Kenmore umývačka riadu"); solr.commit (); SolrQuery dotaz = nový SolrQuery (); query.set ("q", "id: 123456"); QueryResponse response = solr.query (dopyt); SolrDocumentList docList = response.getResults (); assertEquals (docList.getNumFound (), 0);

5. Záver

V tomto rýchlom článku sme sa dozvedeli, ako používať rozhranie API SolrJ Java na vykonávanie niektorých bežných interakcií s fulltextovým vyhľadávacím mechanizmom Apache Solr.

Príklady uvedené v tomto článku si môžete pozrieť na GitHub.


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