“令牌”列表在Lucene 3上

发布于 2024-09-27 07:18:03 字数 324 浏览 4 评论 0原文

我是 Lucene 的新手,我开始学习版本 3 分支,但有一件事我不明白(显然是因为我在该主题上没有经验)。

在 Lucene 2.9 中,如果我想要一个令牌列表,我会创建一个 Token 类的 ArrayList,例如 ArrayList。这对我来说非常直观,而且代币的概念也非常清晰。

既然不鼓励使用 Token 类,而转而使用基于属性的 API,我是否必须创建自己的类来封装我想要的属性?如果是的话,那不是几乎重新创建了 Lucene 的 Token 类吗?

我正在上一堂课来测试分析器,我想,拥有一个结果标记列表可以更容易测试。

任何帮助将不胜感激;) 谢谢你!

I'm new to Lucene, i started learning the version 3 branch and there's one thing i don't understand (obviously because i'm not experienced in the subject).

In Lucene 2.9, if i wanted a list of tokens i would create an ArrayList of Token class, ArrayList for example. That's pretty intuitive for me and the concept of token is very clear.

Now that the use of Token class is disencouraged in favour of the Attribute based API, do i have to create my own class to encapsulate the attributes i want? If yes, isn't that almost recreating the Lucene's Token class?

I'm doing a class to test analyzers, and having a list of resulting tokens makes it easier to test, i guess.

Any help would be appreciated ;)
Thank you!

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

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

发布评论

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

评论(3

咽泪装欢 2024-10-04 07:18:03

根据 Token Javadoc ,
“尽管不再需要使用 Token,但通过新的 TokenStream API,它可以用作实现所有属性的便利类,这对于轻松从旧的 TokenStream API 切换到新的 TokenStream API 特别有用。”

我建议你继续使用Token。与上面的描述相符。

According to the Token Javadoc,
"Even though it is not necessary to use Token anymore, with the new TokenStream API it can be used as convenience class that implements all Attributes, which is especially useful to easily switch from the old to the new TokenStream API."

I suggest you keep using a Token. It matches the description above.

失与倦" 2024-10-04 07:18:03

使用 TermAttribute 类:

TokenStream stream = analyzer.tokenStream("field", "text");
TermAttribute termAttr = stream.getAttribute(TermAttribute.class);
while (stream.incrementToken()) {
    String token = termAttr.term();
}

Use the TermAttribute class:

TokenStream stream = analyzer.tokenStream("field", "text");
TermAttribute termAttr = stream.getAttribute(TermAttribute.class);
while (stream.incrementToken()) {
    String token = termAttr.term();
}
残疾 2024-10-04 07:18:03

我认为你可以这样做:


TokenStream tkst =analyzer.tokenStream("字段", "文本");
Token token = tkst.getAttribute(Token.class);
while (tkst.incrementToken()) {
// 用令牌做一些事情。
}

正确的文档位于分析包中: http://lucene.apache.org/java/3_0_2/api/all/org/apache/lucene/analysis/package-summary.html

I think you can do something like this:


TokenStream tkst = analyzer.tokenStream("field", "text");
Token token = tkst.getAttribute(Token.class);
while (tkst.incrementToken()) {
// Do something with token.
}

The proper documentation is in the analysis package: http://lucene.apache.org/java/3_0_2/api/all/org/apache/lucene/analysis/package-summary.html

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