[voikko] Malaga-Javan uusi versio julkaistu

Hannu Väisänen hvaisane at joyx.joensuu.fi
Tue Feb 17 08:19:28 EET 2009


On Mon, Feb 16, 2009 at 06:08:33PM +0200, Harri Pitkänen wrote:
> huomasin metodissa StaticMalaga.init(String projectFile) pari ongelmaa. Siinä 
> asetetaan ihan alkupuolella
>   initialized = true;
> vaikka tuossa vaiheessa ei vielä tiedetä, onnistuuko alustaminen.

Huomasin itsekin ja siirsin sijoituksen initialized = true; funktion
loppuun.



> Sitten kohdassa
>       malaga = new Malaga (projectFile);
>       if (malaga == null) {
>         LOG.severe ("StaticMalaga: Variable malaga is null. This should never
>                     happen. Exiting.");
>         System.exit (1);
>       }
> tuo if-lauseen ehto ei tosiaankaan koskaan voi olla Java-kielessä tuossa 
> tilanteessa tosi, joten tarkistus on tarpeeton.

Joo, mutta testatessani analyze-funktiota onnistuin kutsumaan sitä
niin, että malaga == null, ja tuo tarkisti, että mahdottomuus ei ollut
päässyt tapahtumaan. Kommentoin sen pois. (Vika oli siinä, että
initialized = true; oli väärässä paikassa. :-)



> Lopuksi logituksessa
>   LOG.severe ("StaticMalaga: Can not initialize Malaga.\n" + t.getMessage()
>   + "\nExiting.");
> sanotaan "Exiting", muttei tuossa kuitenkaan kutsuta System.exit-funktiota.

Tätä en huomannut. Kiitoksia.

Korjattu versio on imuroitavissa samasta paikasta kuin entinenkin:
http://joyds1.joensuu.fi/programs/index.html


Niin, ja päämäärä on saada Suomi-Malaga toimimaan Nutchin kanssa:
http://lucene.apache.org/nutch/



> Ehkä lisäksi kannattaisi tarkistaa, että jos alustusmetodia kutsutaan toisen 
> kerran kun malaga on jo alustettu, oliko pyydetty projektitiedosto sama kuin 
> se, millä alustus alun perin tehtiin. Jos tiedosto ei ole sama, kannattaa 
> heittää poikkeus, jotta kutsuva puoli saa tietää, ettei se saanutkaan 
> haluamaansa tiedostoa käyttöön, vaan siellä on auki joku muu projekti.

Miksi? Malagaa ei saa alustaa kahdesti, mutta useampi kuin yksi
alustusyritys ei välttämättä ole virhe.

Nutchissa tarvitaan jotain tämmöistä:

public class NutchMalagaAnalyzer extends NutchAnalyzer {
  public TokenStream tokenStream (String fieldName, Reader reader)
  {
    TokenStream result = new ...
    result = new MalagaFilter (result);
    ...
    return result;
  }
}

Funktiota tokenStream kutsutaan jokaisen indeksoitavan tiedoston
kohdalla, mutta Nutchista en ole löytänyt mahdollisuutta (koodia
muuttamatta) alustaa Malagaa muualla kuin MalagaFilterin sisällä.



More information about the voikko mailing list