Mercurial Hosting > luan
diff src/luan/modules/lucene/LuceneIndex.java @ 1538:634f6765830e
use goodjava/lucene/logging
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 07 Aug 2020 21:42:16 -0600 |
parents | e73b72a510b4 |
children | c27dc6af87ca |
line wrap: on
line diff
--- a/src/luan/modules/lucene/LuceneIndex.java Fri Aug 07 13:38:25 2020 -0600 +++ b/src/luan/modules/lucene/LuceneIndex.java Fri Aug 07 21:42:16 2020 -0600 @@ -78,6 +78,7 @@ import goodjava.lucene.api.LuceneIndexWriter; import goodjava.lucene.api.GoodIndexWriterConfig; import goodjava.lucene.api.LuceneUtils; +import goodjava.lucene.logging.LoggingIndexWriter; import goodjava.parser.ParseException; import luan.modules.Utils; import luan.Luan; @@ -121,6 +122,7 @@ public static final StringFieldParser STRING_FIELD_PARSER = new StringFieldParser(new KeywordAnalyzer()); public static final StringFieldParser LOWERCASE_FIELD_PARSER = new StringFieldParser(new LowercaseAnalyzer(luceneVersion)); public static final StringFieldParser ENGLISH_FIELD_PARSER = new StringFieldParser(new EnglishAnalyzer(luceneVersion)); + private static final SortField ID_SORT = new SortField("id",SortField.Type.LONG); private final Object version; @@ -140,6 +142,7 @@ private final PostgresBackup postgresBackup; private boolean wasCreated; + private final File logDir; private LuceneIndex(Luan luan,File indexDir,LuanTable options) throws LuanException, IOException, ClassNotFoundException, SQLException @@ -151,6 +154,7 @@ String[] defaultFields = defaultFieldsTbl==null ? null : (String[])defaultFieldsTbl.asList().toArray(new String[0]); LuanTable postgresSpec = Utils.removeTable(options,"postgres_spec"); LuanFunction supplementer = Utils.removeFunction(options,"supplementer"); + logDir = (File)options.remove("log_dir"); Utils.checkEmpty(options); mfp = defaultFieldParser==null ? new MultiFieldParser() : new MultiFieldParser(defaultFieldParser,defaultFields); @@ -185,6 +189,8 @@ fsDir = FSDirectory.open(indexDir); boolean wasCreated = !fsDir.getDirectory().exists(); writer = new LuceneIndexWriter(fsDir,config); + if( logDir != null ) + writer = new LoggingIndexWriter((LuceneIndexWriter)writer,logDir); reader = DirectoryReader.open(fsDir); searcher = new IndexSearcher(reader); initId(); @@ -781,15 +787,28 @@ CheckIndex.Status status = new CheckIndex(fsDir).checkIndex(); if( !status.clean ) logger.error("index not clean"); - if( hasPostgres ) + if( writer instanceof LoggingIndexWriter ) { + LoggingIndexWriter loggingWriter = (LoggingIndexWriter)writer; + logger.info("log check"); + boolean ok = loggingWriter.check(ID_SORT); + } + if( hasPostgres ) { + logger.info("postgres check"); checkPostgres(luan); + } logger.info("end check"); } + public void rebuild_log() throws IOException { + logger.info("start rebuild_log"); + LoggingIndexWriter loggingWriter = (LoggingIndexWriter)writer; + loggingWriter.newLogs(); + logger.info("end rebuild_log"); + } + private void checkPostgres(Luan luan) throws IOException, SQLException, LuanException, ParseException { - //logger.info("start postgres check"); final PostgresBackup.Checker postgresChecker = postgresBackup.newChecker(); final IndexSearcher searcher = openSearcher(); try {