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

标签 java lucene

我从其他人创建的 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/

相关文章:

lucene - 为什么在进行模糊搜索时绕过 Solr 过滤器禁用?

通过外部字段搜索 SOLR

java - Java 8 流的确定性

java - 使用观察者模式保持 TableView 更新

search - Solr - solr.TextField 上的精确匹配

search - 如何强制对Elasticsearch “terms”查询进行not_analyzed

multithreading - Lucene.Net 和 I/O 线程问题

java - Twitter,获取过去 24 小时的所有推文

java - java解析Json文件

java - 克隆 ConcurrentHashMap