[voikko] Solr ja Voikko

Harri Pitkänen hatapitk at iki.fi
Sun Oct 30 18:34:07 EET 2011


Tein esimerkin siitä, miten indeksointi ja haku perusmuotojen mukaan voisi
toimia Solrin ja Voikon kanssa. Tein Voikkoa hyödyntävän äärimmäisen
pelkistetyn toteutuksen BaseTokenFilterFactory-luokasta:

http://www.puimula.org/htp/tmp/solr/solrtest/src/main/java/org/puimula/experimental/solrtest/VoikkoBaseformFilterFactory.java

http://www.puimula.org/htp/tmp/solr/solrtest/src/main/java/org/puimula/experimental/solrtest/VoikkoBaseformFilter.java

Tämä asetetaan käyttöön Solrin asetuksissa (tiedosto schema.xml)
lisäämällä haluttuun analysaattorin konfiguraatioon filtteri:

  <filter
class="org.puimula.experimental.solrtest.VoikkoBaseformFilterFactory"/>


Testasin kokonaisuutta seuraavalla testiohjelmalla:

http://www.puimula.org/htp/tmp/solr/solrtest/src/main/java/org/puimula/experimental/solrtest/App.java

Tuossa siis lisätään indeksiin kaksi asiakirjaa ja tehdään niistä sitten
hakuja neljällä eri sanalla. Testiohjelman ajo osoittaa, että "kissa"
löytyy ensimmäisen asiakirjan kuvauksesta, vaikkei sitä siellä
perusmuodossa olekaan:

Tulokset haulle description:ruokintaan
  Löytyi asiakirjasta Eka asiakirja
Tulokset haulle description:käsikirja
  Löytyi asiakirjasta Toinen asiakirja
Tulokset haulle description:päläpälä
Tulokset haulle description:kissa
  Löytyi asiakirjasta Eka asiakirja


Tätä voisi periaatteessa kehittää: indeksiin pitäisi lisätä kaikki
mahdolliset perusmuodot (ei vain ensimmäistä, kuten tässä
esimerkkitoteutuksessa tehdään). Ja sitten voisi laittaa mukaan myös ne
yhdyssanojen osat.

En ole itse mikään Solr-asiantuntija (tänään vasta ensimmäisen kerran
siihen tutustuin). Mutta voin kyllä kehittää tuota filtteriä ja laittaa
sen vaikka jonnekin virallisempaankin paikkaan, jos siitä oikeasti on
jotain hyötyä.

Jos tätä haluaa joku kokeilla omalla koneella, niin tarvitaan libvoikko
(esim. Linux-jakelun paketista asennettuna) ja libvoikon Java-rajapinta.
Tätä rajapintaa ei ole tietääkseni jakeluihin paketoitu, mutta se löytyy
Maven-projektina mm. libvoikon lähdekoodipaketista. Voikon sanastoksi
pitää ottaa sellainen, jossa on morfologisen analyysin vaatima data
mukana. Sellaisen voi ladata täältä:

  http://www.puimula.org/htp/testing/voikko-snapshot/dict-morphoid.zip

(paketti puretaan hakemiston $HOME/.voikko alle)

Tekemäni testikoodi on Eclipse/Maven-projektina täällä:

  http://www.puimula.org/htp/tmp/solr/solrtest.zip


Harri




More information about the voikko mailing list