创建Lucene Analyzer

时间:2012-01-15 17:11:00

标签: lucene tokenize analyzer stemming

我想做一些基本的希伯来词干。

我可以找到的所有自定义分析器示例都会合并其他分析器和过滤器,但不会自行进行任何字符串级别的处理。

如果我想为流中的每个术语创建一个分析器,可以通过以下规则发出一个或两个术语,我该怎么办? 如果传入的术语以其他任何东西开头,则“a”应该按原样传递。 如果传入的术语以“a”开头,那么应该设置两个术语:原始术语和第二个术语,不带前导“a”且具有较低的提升。

因此,如果文件有“帮助”,它将返回“帮助”,“离开”和“方式^ 0.8”。

我应该覆盖分析仪的哪些方法来执行此操作? (指向类似性质示例的指针将非常有用)。

由于

1 个答案:

答案 0 :(得分:1)

以下是一个示例:http://www.java2s.com/Open-Source/Java-Document/Search-Engine/lucene/org/apache/lucene/wordnet/SynonymTokenFilter.java.htm

简要扫描代码,它似乎应该在同一位置(同义词)发出额外的令牌。它通过重写incrementToken()来实现这一点,你必须为你的问题做一些事情(维护一堆下一个令牌,逐个返回)。

如果此示例不起作用,只需尝试找一个解释如何使用Lucene实现同义词过滤器的示例,它几乎与您的问题完全相同。 Lucene in Action 一书有一个很好的例子,代码可以在这里找到:http://www.manning.com/hatcher3/LIAsourcecode.zip,类SynonymFilter