annotate src/luan/modules/lucene/SupplementingConfig.java @ 1528:3bd4d7963456

use goodjava/lucene/api
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 26 Jul 2020 23:11:53 -0600
parents
children e6d808f40bbc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1528
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
1 package luan.modules.lucene;
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
2
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
3 import java.util.Map;
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
4 import java.util.Collections;
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
5 import org.apache.lucene.index.IndexWriterConfig;
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
6 import org.apache.lucene.index.SnapshotDeletionPolicy;
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
7 import org.apache.lucene.util.Version;
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
8 import goodjava.lucene.queryparser.MultiFieldParser;
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
9 import goodjava.lucene.api.MultiFieldParserConfig;
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
10 import goodjava.lucene.api.MoreFieldInfo;
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
11 import luan.LuanFunction;
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
12 import luan.LuanTable;
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
13 import luan.LuanCloner;
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
14 import luan.LuanException;
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
15 import luan.LuanRuntimeException;
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
16
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
17
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
18 final class SupplementingConfig extends MultiFieldParserConfig {
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
19 private final LuanFunction supplementer;
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
20
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
21 SupplementingConfig(Version luceneVersion,MultiFieldParser mfp,LuanFunction supplementer) {
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
22 super(luceneVersion,mfp);
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
23 LuanCloner cloner = new LuanCloner(LuanCloner.Type.COMPLETE);
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
24 this.supplementer = (LuanFunction)cloner.get(supplementer);
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
25 }
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
26
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
27 public IndexWriterConfig newLuceneConfig() {
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
28 IndexWriterConfig luceneConfig = super.newLuceneConfig();
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
29 SnapshotDeletionPolicy snapshotDeletionPolicy = new SnapshotDeletionPolicy(luceneConfig.getIndexDeletionPolicy());
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
30 luceneConfig.setIndexDeletionPolicy(snapshotDeletionPolicy);
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
31 return luceneConfig;
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
32 }
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
33
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
34 public MoreFieldInfo getMoreFieldInfo(Map<String,Object> storedFields) {
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
35 if( supplementer == null )
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
36 return super.getMoreFieldInfo(storedFields);
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
37 try {
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
38 LuanTable tbl = LuceneIndex.toTable(supplementer.luan(),storedFields);
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
39 tbl = (LuanTable)supplementer.call(tbl);
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
40 if( tbl == null ) {
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
41 return super.getMoreFieldInfo(storedFields);
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
42 } else {
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
43 return new MoreFieldInfo(LuceneIndex.toLucene(tbl),Collections.emptyMap());
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
44 }
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
45 } catch(LuanException e) {
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
46 throw new LuanRuntimeException(e);
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
47 }
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
48 }
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
49 }