[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