【发布时间】:2015-04-21 06:17:56
【问题描述】:
我有 120 万行要索引,每行在 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,这两个数字是一致的。
ps,我使用的是 lucene 5.0。
【问题讨论】: