如何对WhitespaceTokenizer生成的TokenStream中的最后一个项进行特殊处理

时间:2012-08-22 20:17:51

标签: java lucene

我的用例 - 如果一个罗马数字出现在TokenStream的最后,则将其转换为英文数字。否则就让它成为。

实施例。 “Something III”>>> “东西3”。 但是“III Something”>>> “III Something”(与III相同并不是最后一次)

我究竟如何在Lucene中使这个逻辑工作?

P.S。 input.incrementToken()似乎首先返回true,然后对WhitespaceTokenizer生成的TokenStream中的每个术语返回false。

1 个答案:

答案 0 :(得分:0)

是否可以获得更多细节?这段代码?

我想你已经看过了这个:

http://lucene.apache.org/core/3_6_0/api/all/org/apache/lucene/analysis/TokenStream.html

说:

“消费者(即IndexWriter)使用此方法将流推进到下一个令牌”

你的incrementToken第二次返回false是正常的,因为你下面没有任何空格。

你必须用end()循环来知道字符串何时完成(请原谅我的法语,我不知道怎么写它。)