comparison src/luan/modules/lucene/LuceneIndex.java @ 1369:709f7498a363

change Lucene.index() and add Lucene.recover()
author Franklin Schmidt <fschmidt@gmail.com>
date Wed, 19 Jun 2019 00:26:10 -0600
parents 643cf1c37723
children 87a3738d7cc5
comparison
equal deleted inserted replaced
1368:5225cd6ed478 1369:709f7498a363
108 } 108 }
109 } 109 }
110 110
111 private static Map<String,LuceneIndex> indexes = new HashMap<String,LuceneIndex>(); 111 private static Map<String,LuceneIndex> indexes = new HashMap<String,LuceneIndex>();
112 112
113 public static Object[] getLuceneIndex(Luan luan,String indexDirStr,FieldParser defaultFieldParser,String[] defaultFields) 113 public static Object[] getLuceneIndex(Luan luan,File indexDir,FieldParser defaultFieldParser,String[] defaultFields)
114 throws LuanException, IOException 114 throws LuanException, IOException
115 { 115 {
116 String key = new File(indexDirStr).getCanonicalPath(); 116 String key = indexDir.getCanonicalPath();
117 synchronized(indexes) { 117 synchronized(indexes) {
118 LuceneIndex li = indexes.get(key); 118 LuceneIndex li = indexes.get(key);
119 if( li == null ) { 119 if( li == null ) {
120 li = new LuceneIndex(indexDirStr,defaultFieldParser,defaultFields,key); 120 li = new LuceneIndex(indexDir,defaultFieldParser,defaultFields,key);
121 li.openCount = 1; 121 li.openCount = 1;
122 indexes.put(key,li); 122 indexes.put(key,li);
123 } else { 123 } else {
124 if( defaultFieldParser != li.defaultFieldParser ) 124 if( defaultFieldParser != li.defaultFieldParser )
125 throw new LuanException("default_type doesn't match previous use"); 125 throw new LuanException("default_type doesn't match previous use");
155 private int openCount; 155 private int openCount;
156 private final String key; 156 private final String key;
157 private final FieldParser defaultFieldParser; 157 private final FieldParser defaultFieldParser;
158 private final String[] defaultFields; 158 private final String[] defaultFields;
159 159
160 private LuceneIndex(String indexDirStr,FieldParser defaultFieldParser,String[] defaultFields,String key) 160 private LuceneIndex(File indexDir,FieldParser defaultFieldParser,String[] defaultFields,String key)
161 throws LuanException, IOException 161 throws LuanException, IOException
162 { 162 {
163 this.key = key; 163 this.key = key;
164 this.defaultFieldParser = defaultFieldParser; 164 this.defaultFieldParser = defaultFieldParser;
165 this.defaultFields = defaultFields; 165 this.defaultFields = defaultFields;
166 mfp = defaultFieldParser==null ? new MultiFieldParser() : new MultiFieldParser(defaultFieldParser,defaultFields); 166 mfp = defaultFieldParser==null ? new MultiFieldParser() : new MultiFieldParser(defaultFieldParser,defaultFields);
167 mfp.fields.put( "type", STRING_FIELD_PARSER ); 167 mfp.fields.put( "type", STRING_FIELD_PARSER );
168 mfp.fields.put( "id", NumberFieldParser.LONG ); 168 mfp.fields.put( "id", NumberFieldParser.LONG );
169 File indexDir = new File(indexDirStr);
170 this.indexDir = indexDir; 169 this.indexDir = indexDir;
171 Analyzer analyzer = STRING_FIELD_PARSER.analyzer; 170 Analyzer analyzer = STRING_FIELD_PARSER.analyzer;
172 if( defaultFieldParser instanceof StringFieldParser ) { 171 if( defaultFieldParser instanceof StringFieldParser ) {
173 StringFieldParser sfp = (StringFieldParser)defaultFieldParser; 172 StringFieldParser sfp = (StringFieldParser)defaultFieldParser;
174 analyzer = sfp.analyzer; 173 analyzer = sfp.analyzer;