我从其他人创建的 Lucene 索引开始。我想找到给定单词后面的所有单词。我从索引中提取了感兴趣的术语 (org.apache.lucene.index.Term),并且可以找到包含该术语的文档:
segmentTermDocs = segmentReader.termDocs(term);
while (segmentTermDocs.next) {
doc = segmentReader.document(segmentTermDocs.doc);
...
}
有没有办法让我找到该术语在文档中的位置并提取其后面的术语?
最佳答案
由于在您的情况下无法选择对 n 元语法进行索引,因此需要使用一些强力方法。您可以枚举 IndexReader's terms and termPositions ,但这可能会非常慢。
更快的方法是通过枚举术语并使用 MultiPhraseQuery 来实现分治搜索算法。立即检查一组。将所有潜在术语分成合理大小的组(例如 1000 个),并使用每个 block 和前缀词运行 MultiPhraseQuery 搜索。如果有任何命中,请递归调用子组,直到达到单个术语。
关于java - 如何从 Lucene 索引中获取下一个术语?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1223249/