Mercurial Hosting > luan
diff src/goodjava/lucene/logging/LoggingIndexWriter.java @ 1549:41c32da4cbd1
lucene log work
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sat, 03 Oct 2020 20:55:26 -0600 |
parents | 736ec76bbf42 |
children | 9cc4cee39b8b |
line wrap: on
line diff
--- a/src/goodjava/lucene/logging/LoggingIndexWriter.java Sun Sep 27 22:07:18 2020 -0600 +++ b/src/goodjava/lucene/logging/LoggingIndexWriter.java Sat Oct 03 20:55:26 2020 -0600 @@ -27,7 +27,6 @@ import org.apache.lucene.store.Directory; import org.apache.lucene.store.FSDirectory; import goodjava.io.IoUtils; -import goodjava.lucene.api.GoodWriter; import goodjava.lucene.api.GoodIndexWriter; import goodjava.lucene.api.LuceneIndexWriter; import goodjava.lucene.api.GoodCollector; @@ -224,8 +223,9 @@ throw new RuntimeException(); Directory dir = FSDirectory.open(dirFile); LuceneIndexWriter mergeWriter = new LuceneIndexWriter( dir, indexWriter.goodConfig ); - playLog( first.input(), mergeWriter ); - playLog( second.input(), mergeWriter ); + OpDoer opDoer = new OpDoer(mergeWriter); + playLog( first.input(), opDoer ); + playLog( second.input(), opDoer ); mergeWriter.commit(); LogFile merge = newLogFile(); LogOutputStream log = merge.output(); @@ -300,7 +300,7 @@ IoUtils.deleteRecursively(dirFile); Directory dir = FSDirectory.open(dirFile); LuceneIndexWriter checkWriter = new LuceneIndexWriter( dir, indexWriter.goodConfig ); - playLogs(logReaders,checkWriter); + playLogs(logReaders,new OpDoer(checkWriter)); //logger.info("check lucene"); IndexReader checkReader = checkWriter.openReader(); int nCheck = checkReader.numDocs(); @@ -449,10 +449,10 @@ } // return whether stopped at tag - public synchronized void playLogs(GoodWriter writer) throws IOException { - if( writer == null ) - writer = indexWriter; - playLogs( logReaders(logs), writer ); + public synchronized void playLogs(OpDoer opDoer) throws IOException { + if( opDoer == null ) + opDoer = new OpDoer(indexWriter); + playLogs( logReaders(logs), opDoer ); } private static LogInputStream[] logReaders(LogFile[] logs) throws IOException { @@ -463,66 +463,66 @@ return logReaders; } - private static void playLogs(LogInputStream[] logReaders,GoodWriter indexWriter) + private static void playLogs(LogInputStream[] logReaders,OpDoer opDoer) throws IOException { - if( numDocs(indexWriter) != 0 ) + if( numDocs(opDoer.writer) != 0 ) throw new RuntimeException ("not empty"); for( LogInputStream reader : logReaders ) { - playLog(reader,indexWriter); + playLog(reader,opDoer); } - indexWriter.commit(); + opDoer.commit(); } - private static int numDocs(GoodWriter indexWriter) throws IOException { + private static int numDocs(GoodIndexWriter indexWriter) throws IOException { IndexReader reader = indexWriter.openReader(); int n = reader.numDocs(); reader.close(); return n; } - private static void playLog(LogInputStream in,GoodWriter indexWriter) + private static void playLog(LogInputStream in,OpDoer opDoer) throws IOException { while( in.available() > 0 ) { - playOp(in,indexWriter); + playOp(in,opDoer); } in.close(); } - private static void playOp(LogInputStream in,GoodWriter indexWriter) + private static void playOp(LogInputStream in,OpDoer opDoer) throws IOException { - in.readLong(); // time + long time = in.readLong(); // time int op = in.readByte(); switch(op) { case OP_DELETE_ALL: - indexWriter.deleteAll(); + opDoer.deleteAll(time); return; case OP_DELETE_DOCUMENTS: { Query query = in.readQuery(); //System.out.println("OP_DELETE_DOCUMENTS "+query); - indexWriter.deleteDocuments(query); + opDoer.deleteDocuments(time,query); return; } case OP_ADD_DOCUMENT: { Map storedFields = in.readMap(); - indexWriter.addDocument(storedFields); + opDoer.addDocument(time,storedFields); return; } case OP_UPDATE_DOCUMENT: { String keyFieldName = in.readUTF(); Map storedFields = in.readMap(); - indexWriter.updateDocument(keyFieldName,storedFields); + opDoer.updateDocument(time,keyFieldName,storedFields); return; } case OP_TAG: { String tag = in.readUTF(); - indexWriter.tag(tag); + opDoer.tag(time,tag); return; } default: