Apache Solr on sydämeltään avoimen lähdekoodin hakukone, mutta se on paljon enemmän. Se on NoSQL-tietokanta, jolla on kaupallinen tuki. Se on asiakirjatietokanta, joka tarjoaa SQL-tukea ja suorittaa sen hajautetulla tavalla.
Aiemmin olen osoittanut, kuinka luoda ja ladata kokoelma Solriin; voit ladata kokoelman nyt, ellet ole tehnyt sitä aiemmin. (Täysi paljastus: Työskentelen Lucidworksissä, joka työllistää monia Solr-projektin avaintekijöitä.)
Tässä viestissä näytän sinulle vielä 10 muuta asiaa, joita voit tehdä kokoelmalla:
1. Suodata kyselyt
Harkitse tätä kyselyä:
// paikallinen isäntä: 8983 / solr / ipps / select? fq = Provider_State: NC & indent = päällä & q = *: * & wt = json
Itse asiassa tämä kysely näyttää samanlaiselta kuin jos vain tekisin q = Provider_State: NC
. Suodatuskyselyt palauttavat kuitenkin vain tunnukset, eivätkä ne vaikuta pisteisiin. Suodatuskyselyt tallennetaan myös välimuistiin. Tämä on hyvä tapa löytää sopivin q = sininen mokka
sisään osasto: jalkineet
toisin kuin osasto: vaatteet
tai osasto: musiikki
.

2. Faceting
Kokeile tätä kyselyä:
// paikallinen isäntä: 8983 / solr / ipps / select? facet = päällä &
facet.field = Provider_State
& facet.limit = -1 & sisennys = päällä & q = *: * & wt = json
Yläosassa näkyy seuraava:

Faceting antaa sinulle luokkamäärät (muun muassa). Jos olet toteuttamassa vähittäiskauppasivustoa, annat tällä tavoin luokat ja luokkamäärät osastoille tai muilla tavoilla jakaa varastosi.
3. Alueen ulottuvuus
Lisää tämä kyselymerkkijonoon: facet.interval = Average_Total_Payments & facet.interval.set = [0,1999.99] & facet.interval.set = [2000,2999.99] & facet.interval.set = [3000,3999.99] & facet.interval.set = [4000,4999.99] & puoli. interval.set = [5000,5999.99] & facet.interval.set = [6000,6999.99] & facet.interval.set = [7000,7999.99] && facet.interval.set = [8000,8999.99] & facet.interval.set = [9000 , 10000]
Sinä tulet saamaan:

Tämä aluejoukko voi auttaa jakamaan numeerisen kentän alueiden luokkiin. Jos autat jotakuta löytämään kannettavan tietokoneen 2000 dollarin ja 3000 dollarin välillä, tämä on sinulle. Voit tehdä samanlaisen kyselyn ilman alueiden kovaa koodaamista tekemällä näin: facet.range = Average_Total_Payments & facet.range.gap = 999.99 & facet.range.start = 2000 & facet.range.end = 10000
4. DocValues
Varmista skeemassasi, että docValues
attribute on valittu kentille, joihin olet menossa. Tämä optimoi kentän tällaisille hauille ja säästää muistiin kyselyhetkellä, kuten tässä schema.xml-otteessa esitetään:
5. Pseudokentät
Voit tehdä tietojasi koskevia toimintoja ja palauttaa arvon. Kokeile tätä:
// paikallinen isäntä: 8983 / solr / ipps / select? fl = Provider_Name,% 20Average_Total_Payments, price_category: if (min (0, sub (Average_Total_Payments, 5000)),% 22inexpensive% 22,% 22expensive% 22) & sisennys = päällä & q = * : * & rivit = 10 & wt = json

Esimerkissä käytetään joitain Solrin sisäänrakennettuja toimintoja luokittelemaan palveluntarjoajat kalliiksi tai edullisiksi keskimääräisten maksujen perusteella. panen hinta_luokka: jos (min (0, alempi (Keskimääräiset_maksut, 5000)), "halpa", "kallis")
että fl
tai kenttäluettelo sekä kaksi muuta kenttää.
6. Kyselyjäsenet
defType antaa sinun valita yhden Solrin kyselyjäsentäjistä. Oletusarvoinen kyselyn jäsennin on todella hyvä tietyille koneen luomille kyselyille. Mutta Solrilla on myös Dismax- ja eDismax-jäsentimet, jotka ovat parempia normaaleille ihmisille: Voit napsauttaa yhtä niistä järjestelmänvalvojan kyselynäytön alareunassa tai lisätä defType = dismax
kyselymerkkijonoon. Dismax-jäsennin tuottaa yleensä parempia tuloksia käyttäjän antamille kyselyille etsimällä "disjunktiomaksimi" tai kenttä, jolla on eniten vastaavuuksia, ja lisäämällä se pisteisiin.
7. Tehostaminen
Jos etsit Provider_State: AL ^ 5 TAI Provider_State: NC ^ 10
, tulokset Pohjois-Carolinassa pisteytetään korkeammalla kuin Alabamassa. Voit tehdä tämän kyselyssäsi (q = ""
). Tämä on tärkeä tapa manipuloida palautettuja tuloksia.

8. Ajanjaksot
Vaikka esimerkkitiedot eivät tue mitään ajanjaksohakuja, se muotoiltaisiin samalla tavalla timestamp_dt: [2016-12-31T17: 51: 44.000Z - 2017-02-20T18: 06: 44.000Z]
. Solr tukee päivämäärätyyppikenttiä ja päivämäärätyyppihakuja ja suodatusta.
9. TF-IDF ja BM25
Alkuperäistä pisteytysmekanismia, jota Solr käytti (selvittääkseen, mitkä asiakirjat olivat merkityksellisiä hakutermillesi), kutsutaan TF-IDF: ksi "termien taajuus vastaan asiakirjan käänteinen taajuus". Se palauttaa kuinka usein termi esiintyy kentässäsi tai asiakirjassa verrattuna siihen, kuinka usein termi esiintyy kokoelmassasi. Tämän algoritmin ongelmana on, että "Thrones-pelin" esiintyminen 100 kertaa 10-sivuisessa asiakirjassa verrattuna kymmenen kertaa 10-sivuisen asiakirjan kanssa ei tee dokumentista 10 kertaa merkityksellisempää. Se tekee sen lisää asiaankuuluva, mutta ei 10 kertaa enemmän merkityksellisiä.
BM25 tasoittaa tämän prosessin ja antaa asiakirjojen saavuttaa kyllästymispisteen, minkä jälkeen uusien tapahtumien vaikutuksia lievennetään. Kaikki uusimmat Solrin versiot käyttävät oletusarvoisesti BM25: tä.
10. debugQuery
Voit tarkistaa lisättävän debugQuery-järjestelmänvalvojan kyselykonsolista debugQuery = päällä
Solr-kyselymerkkijonoon. Jos tarkastat tulokset, löydät tämän tuloksen:

Muun muassa näet sen käyttävän LuceneQParser-ohjelmaa (vakiomaisen kyselyn jäsentimen nimi) ja sen yläpuolella kuinka kukin tulos pisteytettiin. Näet itse BM25-algoritmin ja kuinka lisäykset vaikuttivat pisteytykseen. Jos yrität virittää hakua, tämä on erittäin arvokas työkalu!
Nämä Solrin kymmenen näkökohtaa auttavat minua varmasti, kun käytän Solria hakuun ja tulosteni virittämiseen.