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

发布于 2024-12-18 01:37:40 字数 782 浏览 2 评论 0原文

我在 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”词干的每个单词(无论是否带重音)的解决方案是第一步去掉重音,然后用分析器解析它,但我不知道这是否是正确的方法。

请问有人可以帮助我吗?

I'm using the SpanishAnalyzer class in Lucene 3.4. When I want to parse accented words, I'm having a strange result. If I parse, for example, these two words: "comunicación" and "comunicacion", the stems I'm getting are "comun" and "comunicacion". If I instead parse "maratón" and "maraton", I'm getting the same stem for both words ("maraton").

So, at least in my opinion, it's very strange that the same word, "comunicación", gives different results depending on it is accented or not. If I search the word "comunicacion", I should get the same result regardless of whether it's accented or not.

The code I'm using is the next one:

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

The solution I've found to be able to get every single word that shares the stem of "comunicacion", accented or not, is to take off accents in a first step, and then parse it with the Analyzer, but I don't know if it's the right way.

Please, can anyone help me?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

淑女气质 2024-12-25 01:37:40

你检查过什么分词器和吗?西班牙分析器使用tokenfilters?有一种叫做 ASCIIFoldingFilter 的东西。尝试将其放置在 StemFilter 之前。它将删除重音符号

Did you check what tokenizer & tokenfilters SpanishAnalyzer uses? There is something called ASCIIFoldingFilter. Try placing it before the StemFilter. It will remove the accents

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文