Mercurial Hosting > luan
comparison src/luan/modules/lucene/LuceneIndex.java @ 1548:736ec76bbf42
lucene log work
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sun, 27 Sep 2020 22:07:18 -0600 |
parents | 35601f15ecc3 |
children | 9cc4cee39b8b |
comparison
equal
deleted
inserted
replaced
1547:f24a9ba7551e | 1548:736ec76bbf42 |
---|---|
142 private final GoodIndexWriterConfig config; | 142 private final GoodIndexWriterConfig config; |
143 | 143 |
144 private final PostgresBackup postgresBackup; | 144 private final PostgresBackup postgresBackup; |
145 private boolean wasCreated; | 145 private boolean wasCreated; |
146 private final File logDir; | 146 private final File logDir; |
147 private final long logTime; | |
147 | 148 |
148 private LuceneIndex(Luan luan,File indexDir,LuanTable options) | 149 private LuceneIndex(Luan luan,File indexDir,LuanTable options) |
149 throws LuanException, IOException, ClassNotFoundException, SQLException | 150 throws LuanException, IOException, ClassNotFoundException, SQLException |
150 { | 151 { |
151 options = new LuanTable(options); | 152 options = new LuanTable(options); |
154 LuanTable defaultFieldsTbl = Utils.removeTable(options,"default_fields"); | 155 LuanTable defaultFieldsTbl = Utils.removeTable(options,"default_fields"); |
155 String[] defaultFields = defaultFieldsTbl==null ? null : (String[])defaultFieldsTbl.asList().toArray(new String[0]); | 156 String[] defaultFields = defaultFieldsTbl==null ? null : (String[])defaultFieldsTbl.asList().toArray(new String[0]); |
156 LuanTable postgresSpec = Utils.removeTable(options,"postgres_spec"); | 157 LuanTable postgresSpec = Utils.removeTable(options,"postgres_spec"); |
157 LuanFunction supplementer = Utils.removeFunction(options,"supplementer"); | 158 LuanFunction supplementer = Utils.removeFunction(options,"supplementer"); |
158 logDir = (File)options.remove("log_dir"); | 159 logDir = (File)options.remove("log_dir"); |
160 logTime = (Long)options.remove("log_time"); | |
159 Utils.checkEmpty(options); | 161 Utils.checkEmpty(options); |
160 | 162 |
161 mfp = defaultFieldParser==null ? new MultiFieldParser() : new MultiFieldParser(defaultFieldParser,defaultFields); | 163 mfp = defaultFieldParser==null ? new MultiFieldParser() : new MultiFieldParser(defaultFieldParser,defaultFields); |
162 mfp.fields.put( "type", STRING_FIELD_PARSER ); | 164 mfp.fields.put( "type", STRING_FIELD_PARSER ); |
163 mfp.fields.put( "id", NumberFieldParser.LONG ); | 165 mfp.fields.put( "id", NumberFieldParser.LONG ); |
189 public boolean reopen() throws IOException { | 191 public boolean reopen() throws IOException { |
190 fsDir = FSDirectory.open(indexDir); | 192 fsDir = FSDirectory.open(indexDir); |
191 boolean wasCreated = !fsDir.getDirectory().exists(); | 193 boolean wasCreated = !fsDir.getDirectory().exists(); |
192 writer = new LuceneIndexWriter(fsDir,config); | 194 writer = new LuceneIndexWriter(fsDir,config); |
193 if( logDir != null ) | 195 if( logDir != null ) |
194 writer = new LoggingIndexWriter((LuceneIndexWriter)writer,logDir); | 196 writer = new LoggingIndexWriter((LuceneIndexWriter)writer,logDir,logTime); |
195 reader = DirectoryReader.open(fsDir); | 197 reader = DirectoryReader.open(fsDir); |
196 searcher = new IndexSearcher(reader); | 198 searcher = new IndexSearcher(reader); |
197 initId(); | 199 initId(); |
198 return wasCreated; | 200 return wasCreated; |
199 } | 201 } |
739 if( writeLock.isHeldByCurrentThread() ) | 741 if( writeLock.isHeldByCurrentThread() ) |
740 throw new RuntimeException(); | 742 throw new RuntimeException(); |
741 writeLock.lock(); | 743 writeLock.lock(); |
742 boolean ok = false; | 744 boolean ok = false; |
743 try { | 745 try { |
744 IndexWriter iw = writer.getLuceneIndexWriter(); | 746 writer.tag("restore_from_postgres"); |
745 iw.deleteAll(); | 747 writer.deleteAll(); |
746 postgresBackup.restoreLucene(this); | 748 postgresBackup.restoreLucene(this); |
747 ok = true; | 749 ok = true; |
748 iw.commit(); | 750 writer.commit(); |
749 wrote(); | 751 wrote(); |
750 ensure_open(); // refresh searcher | 752 ensure_open(); // refresh searcher |
751 initId(); | 753 initId(); |
752 wasCreated = false; | 754 wasCreated = false; |
753 } finally { | 755 } finally { |
789 LoggingIndexWriter loggingWriter = (LoggingIndexWriter)writer; | 791 LoggingIndexWriter loggingWriter = (LoggingIndexWriter)writer; |
790 IndexWriter iw = writer.getLuceneIndexWriter(); | 792 IndexWriter iw = writer.getLuceneIndexWriter(); |
791 iw.deleteAll(); | 793 iw.deleteAll(); |
792 loggingWriter.playLogs(null); | 794 loggingWriter.playLogs(null); |
793 ok = true; | 795 ok = true; |
794 iw.commit(); | |
795 wrote(); | 796 wrote(); |
796 ensure_open(); // refresh searcher | 797 ensure_open(); // refresh searcher |
797 initId(); | 798 initId(); |
798 wasCreated = false; | 799 wasCreated = false; |
799 } finally { | 800 } finally { |