如何从lucene索引中获取用于Field
中的Document
的令牌(无论是令牌列表、TokenStream
还是其他内容)?也就是说,是否可以从索引中获取tokens
(从示例中)中使用的标记?(我并不想知道如何从TokenStream
中获取令牌)
doc.add(new Field("title", tokens))
在文档中有Field.tokenStreamValue()
,但是当我执行doc.getFieldable(field_name)
时,它只返回null
。
我也尝试过(从lucene - Fieldable.tokenStreamValue()中的第三条评论):
TokenSources.getTokenStream(reader, doc_id, field_name)
但我得到了
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)
发布于 2012-03-20 08:53:10
TokenSources类是一个帮助器类,用于检索文档的标记以进行突出显示。有两种方法可以检索给定文档的术语:
您想要使用tries to read the document's terms vector的方法,但由于在索引时没有启用术语向量而失败。
因此,您可以在索引时启用术语向量并继续使用此方法(请参阅Field constructor和Field.TermVector的文档),或者重新分析存储字段的内容。第一种方法可以提供更好的性能,特别是对于较大的字段,而第二种方法将节省空间(如果您的字段已经存储,则不需要存储额外的信息)。
https://stackoverflow.com/questions/9777591
复制相似问题