lucene index getDocCount()不返回与总输入文档编号相同的值

时间:2015-04-21 06:17:56

标签: java lucene

我有1.2M行要编入索引,每行都作为lucene索引编写器中的文档读取。在构建索引之后,我尝试断言已编制索引的记录的总数。这个数字小于1.2M。

添加文件的详细信息如下:

    Directory fsDir = FSDirectory.open(this.indexLoc, NoLockFactory.INSTANCE);
    IndexWriterConfig iwConf = new IndexWriterConfig(analyzer);
    iwConf.setOpenMode(mode);
    IndexWriter indexWriter = new IndexWriter(fsDir, iwConf);
    int count=0;
    FileInputStream input;
    input = new FileInputStream(new File(String.valueOf(dir)));
    CharsetDecoder decoder = Charset.forName("UTF-8").newDecoder();
    decoder.onMalformedInput(CodingErrorAction.IGNORE);
    InputStreamReader isr = new InputStreamReader(input,decoder);
    BufferedReader reader = new BufferedReader(isr);
    StringBuilder content = new StringBuilder();
    String line;

    while ((line = reader.readLine()) != null) {
        Document d = new Document();
        d.add(new TextField(this.fieldName, line, Store.NO));
        indexWriter.addDocument(d);
        count++;
    }

    indexWriter.commit();
    indexWriter.close();
    reader.close();
    isr.close();
    input.close();
}

我获取索引文档编号的方式如下:

IndexReader reader = DirectoryReader.open(FSDirectory.open(this.indexLoc));
int docNum = reader.getDocCount(this.fieldName);

我追溯到1.2M已被添加到文档d中。但是,为什么变量docNum值小于1.2M?

当我用小尺寸文件测试时,比如1k,这两个数字是一致的。

p.s。,我正在使用lucene 5.0。

1 个答案:

答案 0 :(得分:1)

IndexReader.getDocCount(String field)将返回此字段至少一个字词的文档数。因此,如果line为空,则文档计数不会增加addDocument