Mercurial Hosting > luan
comparison 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 |
comparison
equal
deleted
inserted
replaced
1527:fa1e3adbebfb | 1528:3bd4d7963456 |
---|---|
1 package luan.modules.lucene; | |
2 | |
3 import java.util.Map; | |
4 import java.util.Collections; | |
5 import org.apache.lucene.index.IndexWriterConfig; | |
6 import org.apache.lucene.index.SnapshotDeletionPolicy; | |
7 import org.apache.lucene.util.Version; | |
8 import goodjava.lucene.queryparser.MultiFieldParser; | |
9 import goodjava.lucene.api.MultiFieldParserConfig; | |
10 import goodjava.lucene.api.MoreFieldInfo; | |
11 import luan.LuanFunction; | |
12 import luan.LuanTable; | |
13 import luan.LuanCloner; | |
14 import luan.LuanException; | |
15 import luan.LuanRuntimeException; | |
16 | |
17 | |
18 final class SupplementingConfig extends MultiFieldParserConfig { | |
19 private final LuanFunction supplementer; | |
20 | |
21 SupplementingConfig(Version luceneVersion,MultiFieldParser mfp,LuanFunction supplementer) { | |
22 super(luceneVersion,mfp); | |
23 LuanCloner cloner = new LuanCloner(LuanCloner.Type.COMPLETE); | |
24 this.supplementer = (LuanFunction)cloner.get(supplementer); | |
25 } | |
26 | |
27 public IndexWriterConfig newLuceneConfig() { | |
28 IndexWriterConfig luceneConfig = super.newLuceneConfig(); | |
29 SnapshotDeletionPolicy snapshotDeletionPolicy = new SnapshotDeletionPolicy(luceneConfig.getIndexDeletionPolicy()); | |
30 luceneConfig.setIndexDeletionPolicy(snapshotDeletionPolicy); | |
31 return luceneConfig; | |
32 } | |
33 | |
34 public MoreFieldInfo getMoreFieldInfo(Map<String,Object> storedFields) { | |
35 if( supplementer == null ) | |
36 return super.getMoreFieldInfo(storedFields); | |
37 try { | |
38 LuanTable tbl = LuceneIndex.toTable(supplementer.luan(),storedFields); | |
39 tbl = (LuanTable)supplementer.call(tbl); | |
40 if( tbl == null ) { | |
41 return super.getMoreFieldInfo(storedFields); | |
42 } else { | |
43 return new MoreFieldInfo(LuceneIndex.toLucene(tbl),Collections.emptyMap()); | |
44 } | |
45 } catch(LuanException e) { | |
46 throw new LuanRuntimeException(e); | |
47 } | |
48 } | |
49 } |