【发布时间】:2010-10-01 08:16:09
【问题描述】:
使用 Java 版本的 Lucene,如何找出索引中的文档数?
【问题讨论】:
使用 Java 版本的 Lucene,如何找出索引中的文档数?
【问题讨论】:
IndexReader 包含您需要的方法,尤其是 numDocs
http://lucene.apache.org/core/3_6_0/api/all/org/apache/lucene/index/IndexReader.html#numDocs()
【讨论】:
使用java你可以像这样找到文件的数量:
IndexReader reader = IndexReader.open(FSDirectory.open(indexDirectory));
System.out.println(reader.maxDoc()); //this will give ya what you need.
【讨论】:
reader.numDocs() 考虑到了这一点。
在使用 Hibernate Search 时,可以通过 Hibernate Search API 获取 Lucene IndexReader 实例,然后使用 reader.numDocs(),如前面的答案中所述。
FullTextEntityManager fullTextEntityManager = org.hibernate.search.jpa.Search.getFullTextEntityManager(getEntityManager());
IndexReader reader = fullTextEntityManager.getSearchFactory().getIndexReaderAccessor().open(MyEntity1.class, MyEntity2.class ...);
int numDocs = reader.numDocs();
【讨论】:
对于使用 IndexReader 的最新 Lucene 版本,以下 Kotlin sn-p 可以完成这项工作:
DirectoryReader.open(directory).use { reader ->
println(reader.numDocs())
}
其中directory 是包含索引的Directory 实例。
【讨论】: