gpt4 book ai didi

java - 如何从 Lucene TokenStream 中获取 Token?

转载 作者:IT老高 更新时间:2023-10-28 11:53:18 31 4
gpt4 key购买 nike

我正在尝试使用 Apache Lucene 进行标记,我对从 TokenStream 获取 token 的过程感到困惑。

最糟糕的是,我正在查看 JavaDocs 中解决我问题的评论。

http://lucene.apache.org/java/3_0_1/api/core/org/apache/lucene/analysis/TokenStream.html#incrementToken%28%29

不知何故,应该使用 AttributeSource,而不是 Token。我完全不知所措。

谁能解释如何从 TokenStream 中获取类似 token 的信息?

最佳答案

是的,这有点复杂(与好方法相比),但应该这样做:

TokenStream tokenStream = analyzer.tokenStream(fieldName, reader);
OffsetAttribute offsetAttribute = tokenStream.getAttribute(OffsetAttribute.class);
TermAttribute termAttribute = tokenStream.getAttribute(TermAttribute.class);

while (tokenStream.incrementToken()) {
int startOffset = offsetAttribute.startOffset();
int endOffset = offsetAttribute.endOffset();
String term = termAttribute.term();
}

编辑:方式

根据 Donotello 的说法,TermAttribute 已被弃用,取而代之的是 CharTermAttribute。根据 jpountz(和 Lucene 的文档),addAttributegetAttribute 更可取。

TokenStream tokenStream = analyzer.tokenStream(fieldName, reader);
OffsetAttribute offsetAttribute = tokenStream.addAttribute(OffsetAttribute.class);
CharTermAttribute charTermAttribute = tokenStream.addAttribute(CharTermAttribute.class);

tokenStream.reset();
while (tokenStream.incrementToken()) {
int startOffset = offsetAttribute.startOffset();
int endOffset = offsetAttribute.endOffset();
String term = charTermAttribute.toString();
}

关于java - 如何从 Lucene TokenStream 中获取 Token?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2638200/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com