Finnassa hakutulokset voidaan järjestää relevanssin perusteella, eli hakukriteereihin nähden osuvimmat tulokset järjestetään tuloksessa ensimmäiseksi. Omassa Finna-näkymässä organisaatio voi säätää relevanssia tarpeen mukaan.

Relevanssia säätämällä on helppo sotkea hakutulokset. Kannattaa olla varovainen ja testata muutokset huolellisesti.

VuFind ja Finna

Relevanssi määräytyy oletuksena local/config/finna/searchspecs.yaml-tiedoston perusteella. Tiedosto on YAML-muodossa, jossa sisennykset määrittävät tiedoston muodon. Merkistönä on UTF-8 ja sisennykseen käytetään välilyöntejä, ei sarkaimia (tab). Omat muutokset tulee tehdä local/config/vufind/searchspecs.yaml -tiedostoon. Siihen ei tarvitse kopioida kaikkea alkuperäisestä searchspecs.yaml:sta, muutetut hakukentät riittävät.

Relevanssista saa lisätietoa lisäämällä Finnan hakutulossivun osoitteen perään parametrin &debugSolrQuery=true ja tarkastelemalla sen jälkeen sivun lähdekoodia.

Useimmissa hakukentissa on kaksi erilaista prosessointitapaa, DismaxFields and QueryFields. Finnassa käytetään eDisMax-hakusyntaksia aina kun mahdollista, mutta jotkin hakuehdot edellyttävät Lucene-hakusyntaksia. Näistä löytyy enemmän selitystä VuFindin wikistä, mutta relevanssin säätämisen kannalta on olennaista tehdä samat muutokset molempiin kohtiin.

Hakukenttien perässä ^-merkin jälkeen tai hakasuluissa mainittu numero kertoo, kuinka suuren suhteellisen painoarvon kentän sisältö saa hakutuloksessa (weighting). Nämä painoarvot ovat suhteessa vain muihin saman haun kenttiin, eivät mihinkään muuhun. Suurempi luku nostaa kentän tärkeämmäksi kuin pienemmän luvun omaavat kentät, mutta hakuehdon täsmäävyydellä on myös merkitys lopullista painoarvoa laskettaessa.

Joistakin hakukentistä on olemassa tavallinen ja unstemmed-versio (esim. allfields ja allfields_unstemmed). unstemmed-kentissä ei käytetä kielenkäsittelyä, esim. perusmuotoon palautusta. Niiden painoarvoa kasvattamalla nostetaan täsmälliset osumat tärkeämmiksi kuin epätäsmälliset. Lisäksi osassa hakumäärityksista, esim. AllFields:ssä, on ExactSettings-kohta, jota käytetään, jos hakuehto on ympäröity lainausmerkein.

Hakutulosten pisteytyksessä käytetään BM25-algoritmia.

Hakutuloslistojen järjestykseen vaikuttavat DisMax-parametrit

DisMaxin dokumentaatiossa kerrotaan, että seuraavat DisMax-parametrit vaikuttavan relevanssipisteytykseen (engl. score) eli hakutuloslistan järjestykseen. Lisäksi käytettävissä on eDisMaxin lisäparametrit.

Keskeisimmät parametrit

pf

Parametrilla pf voidaan nostaa dokumenttien pisteitä tapauksissa, joissa kaikki hakusanat ovat dokumentissa lähellä toisiaan. Normaalisti DisMax laskee jokaiselle hakusanalle omat relevanssipisteensä. Jos parametri pf on annettu, DisMax antaa lisäksi sen mukaisen painotuksen hakusanojen muodostamalle fraasille.

Muotoilu on lista kenttä- ja nostokerroinpareja. Näitä käytetään, kun luodaan kyselyä parametrin q (hakulauseke) perusteella.

Esim.  Korostetaan tietueita, joissa on otsikossa sanat juuri halutussa järjestyksessä:

   - ['pf', title_txtP^1000 author^500]

tie
Oletusarvoisesti relevanssinlaskennassa käytetään suurimmat pisteet saaneen kentän pisteitä.

Kun tie-parametri on määritelty, muidenkin osumakenttien pisteitä lisätään suurimmat pisteet saaneen kentän pisteisiin.

bq
bq on SolrQuerySyntax-muotoinen merkkijono, joka sisällytetään käyttäjän kyselyyn ja joka vaikuttaa relevanssipisteiden laskentaan. bq:ssa annetut ehdot eivät rajaa hakutulosta, vaan vaikuttavat ainoastaan sen järjestykseen.

Esim. Korostetaan suomenkielisiä tietueita:

   - ['bq', (language:"fin")^0.11]

bf

bf-parametrin avulla voi sisällyttää käyttäjän kyselyyn funktioita. Funktio voi olla mikä tahansa Solrin natiivifunktio, ja kullekin on mahdollista antaa nostokerroin. bf-parametrin funktiot sisällytetään käyttäjän kyselyyn ja vaikuttavat relevanssipisteisiin.

Esim. Korostetaan uusia tietueita:

   - ['bf', "recip(ms(NOW/DAY,main_date),3.16e-11,1,1)"]

Täsmentävät parametrit

ps

Parametri ps täsmentää parametria pf. Parametri ps kertoo, montako "positiota", eli käytännössä sanaa, merkkijonon osaa saisi enintään siirtää, jotta hakutulokseen sisältyvä merkkijono olisi täsmälleen sama kuin käyttäjän syöttämät hakusanat (vrt. "fraasihaku"). Lisätietoja löytyy Solr-wikistä. Kirjain s on tässä lyhenne englanninkielisestä sanasta slop, jolla tarkoitetaan tämän siirron suuruutta.

Esim. Korostetaan hakutuloksia, joissa sanojen etäisyys toisistaan on enintään 2 positiota:

   - ['ps', 2]

Esimerkki

Tiedostossa searchspecs.yaml voitaisiin määritellä seuraavat DisMax-parametrit kaikkiin kenttiin kohdistuvalle haulle. Esimerkissä on mukana myös DisMax-kentät.

AllFields:
 DismaxFields:
   - title_txtP^2600
   - title_full_unstemmed^700
   - title_full^650
   - title_alt^200
   - title_new^100
   - series^50
   - series2^30
   - author^2500
   - author2^250
   - author_additional^50
   - author_fuller^150
   - contents^10
   - description^10
   - topic_unstemmed^900
   - topic^400
   - geographic^300
   - genre^300
   - allfields_unstemmed^250
   - fulltext_unstemmed^250
   - allfields
   - fulltext
   - isbn
   - issn
   - collection_txt_mv
 DismaxParams:
   # this line will boost newer releases
   - ['bf', "recip(ms(NOW/DAY,main_date),3.16e-11,1,1)"]
   # this line will boost finnish language in author searches
   - ['bq', (language:"fin")^0.11]
   - ['bq', (* -(format:"1/Other/Kit/"))^1000000]
   - ['bq', (format:"0/PhysicalObject/")^1000]
   - ['pf', title_txtP^1000 author^500]
   - ['ps', 2]

Linkkejä

DisMax-ohje Solr-wikissä

eDisMax-ohje Solr-wikissä

DisMax-opas Solr:n Confluencessa

Solr Relevancy FAQ

BM25 The Next Generation of Lucene Relevance

  • No labels