首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从lucene索引中获取field的标记

从lucene索引中获取field的标记
EN

Stack Overflow用户
提问于 2012-03-20 04:39:38
回答 1查看 2.3K关注 0票数 1

如何从lucene索引中获取用于Field中的Document的令牌(无论是令牌列表、TokenStream还是其他内容)?也就是说,是否可以从索引中获取tokens (从示例中)中使用的标记?(我并不想知道如何从TokenStream中获取令牌)

代码语言:javascript
代码运行次数:0
运行
复制
doc.add(new Field("title", tokens))

在文档中有Field.tokenStreamValue(),但是当我执行doc.getFieldable(field_name)时,它只返回null

我也尝试过(从lucene - Fieldable.tokenStreamValue()中的第三条评论):

代码语言:javascript
代码运行次数:0
运行
复制
TokenSources.getTokenStream(reader, doc_id, field_name)

但我得到了

代码语言:javascript
代码运行次数:0
运行
复制
java.lang.IllegalArgumentException: title in doc #630does not have any term position data stored
    at org.apache.lucene.search.highlight.TokenSources.getTokenStream(TokenSources.java:256)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-20 16:53:10

TokenSources类是一个帮助器类,用于检索文档的标记以进行突出显示。有两种方法可以检索给定文档的术语:

  • 重新分析存储的字段,
  • 读取文档的术语向量。

您想要使用tries to read the document's terms vector的方法,但由于在索引时没有启用术语向量而失败。

因此,您可以在索引时启用术语向量并继续使用此方法(请参阅Field constructorField.TermVector的文档),或者重新分析存储字段的内容。第一种方法可以提供更好的性能,特别是对于较大的字段,而第二种方法将节省空间(如果您的字段已经存储,则不需要存储额外的信息)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9777591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档