我的用例 - 如果罗马数字出现在 TokenStream 的最后,则将其转换为英文数字。否则就让它过去吧。
前任。“第三件事”>>>“第三件事”。但是“III 东西”>>>“III 东西”(仍然与 III 没有最后出现相同)
我究竟如何使这个逻辑在 Lucene 中起作用?
ps input.incrementToken() 似乎首先返回 true,然后为 WhitespaceTokenizer 生成的 TokenStream 中的每个术语返回 false。
是否有可能有更多的细节?一段代码?
我想你已经看过这个了:
http://lucene.apache.org/core/3_6_0/api/all/org/apache/lucene/analysis/TokenStream.html
说:
“消费者(即IndexWriter)使用此方法将流推进到下一个令牌”
您的 incrementToken 第二次返回 false 是正常的,因为接下来您没有任何空间。
您必须使用 end() 循环才能知道字符串何时完成(请原谅我的法语,我不知道如何编写它)。