如何从Lucene索引中获取下一个术语?

时间:2009-08-03 16:20:44

标签: java lucene

我是从其他人创建的Lucene索引开始的。我想找到一个字后面的所有单词。我从索引中提取了感兴趣的术语(org.apache.lucene.index.Term),我可以找到包含该术语的文档:

segmentTermDocs = segmentReader.termDocs(term);
while (segmentTermDocs.next) {
        doc = segmentReader.document(segmentTermDocs.doc);
...
}

我有没有办法在文档中找到该术语的位置并提取其后的术语?

2 个答案:

答案 0 :(得分:1)

由于在你的情况下索引n-gram不是一种选择,因此需要一些暴力。你可以枚举IndexReader's terms and termPositions,但这可能会非常缓慢。

更快的方法是通过枚举术语并使用MultiPhraseQuery一次检查一个组来实现分而治之的搜索算法。将所有潜在术语拆分为合理大小的组(比如1000),并对每个块和前缀词运行MultiPhraseQuery搜索。如果有任何匹配,则递归调用子组,直到达到单个术语。

答案 1 :(得分:1)