Lucene SpanishAnalyzer类的奇怪行为带有重音词

时间:2011-11-24 05:41:02

标签: lucene analyzer diacritics stemming

我正在使用Lucene 3.4中的SpanishAnalyzer类。当我想解析重音词时,我的结果很奇怪。例如,如果我解析这两个词:“comunicación”和“comunicacion”,我得到的词干就是“comun”和“comunicacion”。如果我改为解析“maratón”和“maraton”,我会得到两个词(“maraton”)相同的词干。

所以,至少在我看来,同一个词“comunicación”给出不同的结果是非常奇怪的,取决于它是否有重音。如果我搜索“comunicacion”这个词,我会得到相同的结果,无论它是否有重音。

我正在使用的代码是下一个:

SpanishAnalyzer sa = new SpanishAnalzyer(Version.LUCENE_34);
QueryParser parser = new QueryParser(Version.LUCENE_34, "content", sa);
String str = "comunicación";
String str2 = "comunicacion";
System.out.println("first: " + parser.parse(str)); //stem = comun
System.out.println("second: " + parser.parse(str2)); //stem = comunicacion

我发现能够得到每个单词共享“comunicacion”词干的解决方案,无论是否重音,都是在第一步中取消重音,然后用分析器解析它,但是我不知道这是不是正确的方式。

拜托,有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

你有没有检查什么是tokenizer& tokenfilters SpanishAnalyzer使用?有一种叫做ASCIIFoldingFilter的东西。尝试将它放在StemFilter之前。它将删除重音