当前位置: 首页 > 面试题库 >

如何从Lucene TokenStream获取令牌?

慕铭
2023-03-14
问题内容

我正在尝试使用Apache Lucene进行令牌化,但我对从中获取令牌的过程感到困惑TokenStream

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

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

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

谁能解释如何从TokenStream获得类似令牌的信息?


问题答案:

是的,这有点令人费解(与好的方式相比),但是应该这样做:

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的文档),addAttribute比更为可取getAttribute

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();
}


 类似资料:
  • 问题内容: 尝试在SafariViewController中使用Facebook OAuth。首先,我使用SafariViewController打开authURL,如果用户在Safari上登录Facebook,它将重定向它们并返回带有该特定服务令牌的OAuth URL,例如Instagram 响应:https : //www.facebook.com/connect/login_success.

  • 问题内容: 我正在编写一个在x86-32和x86-64 Linux中使用和进行反汇编的工具。问题是,尽管我能够分解libopcode,但无法获得任何指令信息。为了演示起见,我举了一个最小的例子来重现我的问题。该程序应从入口点反汇编到第一个/ 。 该代码有点被全局变量所破坏,为简洁起见,省略了错误检查等,但是应该清楚地说明问题。 可以使用以下内容构建此源。要执行成功的链接,需要将该软件包安装在本地计

  • 我正在尝试使用Web服务。我需要获取令牌并在授权标头中发送此令牌,我正在获取令牌,但在服务器中存在问题,因为令牌是v1并且他们正在使用v2。 这是我用来获取代码的网址 https://login.microsoftonline.com/tenant/oauth2/v2.0/authorize?response_type=code 这是获取令牌的url https://login.microsoft

  • 这是我第一次使用FCM。 我从Firebase/QuickStart-Android下载了一个示例,并安装了FCM QuickStart。但我无法从日志中获得任何令牌,甚至在应用程序中点击日志令牌按钮。 然后我尝试用Firebase控制台发送消息,并设置为目标我的应用程序包名称。我收到短信了。 完成以上操作后,您将在logcat中获得令牌。但最后,我找到了一个方便的方法来获取它,只需使用debug

  • 嗨,我正在尝试从给定的令牌获取电子邮件用户。我尝试过这样来解析令牌,但根据以下示例,我总是得到空值或值: 我将令牌放在url上,就像这样localhost:8000/admin/user/get_all?token={{token},我还将令牌作为添加到头中注意:我正在使用postman发出请求。但是当我尝试将解析值传递给响应时,我总是得到值: 如果我错了,请纠正我:解析的意思是获取身份验证用户的