The example in this question和其他一些我在网上看到的方法,是使用postings
的{{1}}方法来获取字词位置。从链接的问题的示例中复制粘贴:
TermVector
此代码对我有用,但令我发疯的是IndexReader ir = obtainIndexReader();
Terms tv = ir.getTermVector( doc, field );
TermsEnum terms = tv.iterator();
PostingsEnum p = null;
while( terms.next() != null ) {
p = terms.postings( p, PostingsEnum.ALL );
while( p.nextDoc() != PostingsEnum.NO_MORE_DOCS ) {
int freq = p.freq();
for( int i = 0; i < freq; i++ ) {
int pos = p.nextPosition(); // Always returns -1!!!
BytesRef data = p.getPayload();
doStuff( freq, pos, data ); // Fails miserably, of course.
}
}
}
类型是保存位置信息的地方。我所见过的所有文档都说术语向量保持位置数据。但是,这种类型没有任何方法可以获取该信息!
Lucene的旧版本显然具有一种方法,但是至少从Lucene的6.5.1版本开始,情况并非如此。
相反,我应该使用Terms
方法来遍历文档,但是我已经知道我要处理哪个文档!
API文档没有任何关于仅返回当前文档(向量属于该文档的文档)的信息,但是当我运行它时,我只会得到当前文档。
这是从项向量中获取位置数据的正确且唯一的方法吗?为什么会有如此不直观的API?是否有文档解释为什么以前的方法对此有所支持?
答案 0 :(得分:1)
不知道“对与错”,但是对于版本6.6.3来说似乎可行。
pandas