【问题标题】:Finding the number of documents in a Lucene index查找 Lucene 索引中的文档数
【发布时间】:2010-10-01 08:16:09
【问题描述】:

使用 Java 版本的 Lucene,如何找出索引中的文档数?

【问题讨论】:

    标签: java lucene


    【解决方案1】:

    【讨论】:

    【解决方案2】:

    使用java你可以像这样找到文件的数量:

    IndexReader reader = IndexReader.open(FSDirectory.open(indexDirectory));
    System.out.println(reader.maxDoc()); //this will give ya what you need.
    

    【讨论】:

    • 从技术上讲,这将包括已删除的文档。 reader.numDocs() 考虑到了这一点。
    【解决方案3】:
    【解决方案4】:

    在使用 Hibernate Search 时,可以通过 Hibernate Search API 获取 Lucene IndexReader 实例,然后使用 reader.numDocs(),如前面的答案中所述。

    FullTextEntityManager fullTextEntityManager = org.hibernate.search.jpa.Search.getFullTextEntityManager(get‌​EntityManager());
    IndexReader reader = fullTextEntityManager.getSearchFactory().getIndexReaderAcces‌​sor().open(MyEntity1‌​.class, MyEntity2.class ...);
    int numDocs = reader.numDocs();
    

    【讨论】:

      【解决方案5】:

      对于使用 IndexReader 的最新 Lucene 版本,以下 Kotlin sn-p 可以完成这项工作:

      DirectoryReader.open(directory).use { reader ->
          println(reader.numDocs())
      }
      

      其中directory 是包含索引的Directory 实例。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多