annotate src/luan/modules/lucene/LuceneIndex.java @ 1802:ca98dee04e08 default tip

add Parsers.json_null
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 21 Apr 2024 21:25:15 -0600
parents c62324841dfb
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
230
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
1 package luan.modules.lucene;
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
2
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
3 import java.io.File;
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
4 import java.io.IOException;
1397
0dc9837c16be fix lucene issues
Franklin Schmidt <fschmidt@gmail.com>
parents: 1395
diff changeset
5 import java.lang.ref.Reference;
0dc9837c16be fix lucene issues
Franklin Schmidt <fschmidt@gmail.com>
parents: 1395
diff changeset
6 import java.lang.ref.WeakReference;
546
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
7 import java.util.Map;
1345
6f8988830098 unique LuceneIndex per dir
Franklin Schmidt <fschmidt@gmail.com>
parents: 1344
diff changeset
8 import java.util.HashMap;
546
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
9 import java.util.ArrayList;
704
90c89138c234 optimize lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 696
diff changeset
10 import java.util.concurrent.atomic.AtomicInteger;
230
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
11 import java.util.concurrent.locks.ReentrantLock;
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
12 import org.apache.lucene.analysis.Analyzer;
1341
a015a0b5c388 add Html.decode(), Lucene.count_tokens(), lucene boosts, Sql.database.set()
Franklin Schmidt <fschmidt@gmail.com>
parents: 1337
diff changeset
13 import org.apache.lucene.analysis.TokenStream;
544
c5a93767cc5c lucene overhaul, untested
Franklin Schmidt <fschmidt@gmail.com>
parents: 527
diff changeset
14 import org.apache.lucene.analysis.core.KeywordAnalyzer;
1749
d1e7564a9ce5 improve query parser
Franklin Schmidt <fschmidt@gmail.com>
parents: 1696
diff changeset
15 import org.apache.lucene.analysis.core.SimpleAnalyzer;
1345
6f8988830098 unique LuceneIndex per dir
Franklin Schmidt <fschmidt@gmail.com>
parents: 1344
diff changeset
16 import org.apache.lucene.analysis.en.EnglishAnalyzer;
233
ef39bc4d3f70 basic lucene works
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 232
diff changeset
17 import org.apache.lucene.document.Document;
230
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
18 import org.apache.lucene.index.DirectoryReader;
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
19 import org.apache.lucene.index.Term;
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
20 import org.apache.lucene.index.SnapshotDeletionPolicy;
546
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
21 import org.apache.lucene.index.IndexCommit;
545
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
22 import org.apache.lucene.index.AtomicReaderContext;
1391
94f48cc76de8 add lucene check
Franklin Schmidt <fschmidt@gmail.com>
parents: 1390
diff changeset
23 import org.apache.lucene.index.CheckIndex;
230
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
24 import org.apache.lucene.store.FSDirectory;
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
25 import org.apache.lucene.util.Version;
546
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
26 import org.apache.lucene.util.BytesRef;
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
27 import org.apache.lucene.util.NumericUtils;
312
d34be4588556 add lucene query parsing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 303
diff changeset
28 import org.apache.lucene.search.Query;
1539
c27dc6af87ca remove nextId
Franklin Schmidt <fschmidt@gmail.com>
parents: 1538
diff changeset
29 import org.apache.lucene.search.MatchAllDocsQuery;
1771
c62324841dfb improve NumberFieldParser and add key map lucene query
Franklin Schmidt <fschmidt@gmail.com>
parents: 1764
diff changeset
30 import org.apache.lucene.search.BooleanQuery;
c62324841dfb improve NumberFieldParser and add key map lucene query
Franklin Schmidt <fschmidt@gmail.com>
parents: 1764
diff changeset
31 import org.apache.lucene.search.BooleanClause;
c62324841dfb improve NumberFieldParser and add key map lucene query
Franklin Schmidt <fschmidt@gmail.com>
parents: 1764
diff changeset
32 import org.apache.lucene.search.TermQuery;
230
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
33 import org.apache.lucene.search.TopDocs;
544
c5a93767cc5c lucene overhaul, untested
Franklin Schmidt <fschmidt@gmail.com>
parents: 527
diff changeset
34 import org.apache.lucene.search.Sort;
c5a93767cc5c lucene overhaul, untested
Franklin Schmidt <fschmidt@gmail.com>
parents: 527
diff changeset
35 import org.apache.lucene.search.SortField;
c5a93767cc5c lucene overhaul, untested
Franklin Schmidt <fschmidt@gmail.com>
parents: 527
diff changeset
36 import org.apache.lucene.search.IndexSearcher;
545
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
37 import org.apache.lucene.search.TotalHitCountCollector;
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
38 import org.apache.lucene.search.ScoreDoc;
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
39 import org.apache.lucene.search.Collector;
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
40 import org.apache.lucene.search.Scorer;
1342
60599adc27b8 add lucene search options
Franklin Schmidt <fschmidt@gmail.com>
parents: 1341
diff changeset
41 import org.apache.lucene.search.Explanation;
624
8281a248c47e add lucene highlighter
Franklin Schmidt <fschmidt@gmail.com>
parents: 622
diff changeset
42 import org.apache.lucene.search.highlight.Formatter;
8281a248c47e add lucene highlighter
Franklin Schmidt <fschmidt@gmail.com>
parents: 622
diff changeset
43 import org.apache.lucene.search.highlight.Highlighter;
8281a248c47e add lucene highlighter
Franklin Schmidt <fschmidt@gmail.com>
parents: 622
diff changeset
44 import org.apache.lucene.search.highlight.InvalidTokenOffsetsException;
8281a248c47e add lucene highlighter
Franklin Schmidt <fschmidt@gmail.com>
parents: 622
diff changeset
45 import org.apache.lucene.search.highlight.NullFragmenter;
1248
475905984870 improve lucene highlighter and allow bbcode_to_text quoter to be nil
Franklin Schmidt <fschmidt@gmail.com>
parents: 1227
diff changeset
46 import org.apache.lucene.search.highlight.SimpleSpanFragmenter;
624
8281a248c47e add lucene highlighter
Franklin Schmidt <fschmidt@gmail.com>
parents: 622
diff changeset
47 import org.apache.lucene.search.highlight.QueryScorer;
8281a248c47e add lucene highlighter
Franklin Schmidt <fschmidt@gmail.com>
parents: 622
diff changeset
48 import org.apache.lucene.search.highlight.TokenGroup;
1474
13cbce740e1e LowercaseAnalyzer
Franklin Schmidt <fschmidt@gmail.com>
parents: 1459
diff changeset
49 import goodjava.lucene.analysis.LowercaseAnalyzer;
1459
b04b8fc5f4f4 GoodQueryParser
Franklin Schmidt <fschmidt@gmail.com>
parents: 1458
diff changeset
50 import goodjava.lucene.queryparser.GoodQueryParser;
1458
6b6c11c9164e goodjava.lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 1454
diff changeset
51 import goodjava.lucene.queryparser.FieldParser;
6b6c11c9164e goodjava.lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 1454
diff changeset
52 import goodjava.lucene.queryparser.MultiFieldParser;
6b6c11c9164e goodjava.lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 1454
diff changeset
53 import goodjava.lucene.queryparser.StringFieldParser;
6b6c11c9164e goodjava.lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 1454
diff changeset
54 import goodjava.lucene.queryparser.NumberFieldParser;
1528
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents: 1526
diff changeset
55 import goodjava.lucene.api.GoodIndexWriter;
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents: 1526
diff changeset
56 import goodjava.lucene.api.LuceneIndexWriter;
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents: 1526
diff changeset
57 import goodjava.lucene.api.GoodIndexWriterConfig;
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents: 1526
diff changeset
58 import goodjava.lucene.api.LuceneUtils;
1538
634f6765830e use goodjava/lucene/logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1535
diff changeset
59 import goodjava.lucene.logging.LoggingIndexWriter;
1551
9cc4cee39b8b add LuanOpDoer
Franklin Schmidt <fschmidt@gmail.com>
parents: 1548
diff changeset
60 import goodjava.lucene.logging.OpDoer;
1672
8dd8c556c449 backup work
Franklin Schmidt <fschmidt@gmail.com>
parents: 1623
diff changeset
61 import goodjava.lucene.backup.BackupIndexWriter;
1402
27efb1fcbcb5 move luan.lib to goodjava
Franklin Schmidt <fschmidt@gmail.com>
parents: 1399
diff changeset
62 import goodjava.parser.ParseException;
230
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
63 import luan.modules.Utils;
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
64 import luan.Luan;
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
65 import luan.LuanTable;
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
66 import luan.LuanFunction;
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
67 import luan.LuanException;
545
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
68 import luan.LuanRuntimeException;
1402
27efb1fcbcb5 move luan.lib to goodjava
Franklin Schmidt <fschmidt@gmail.com>
parents: 1399
diff changeset
69 import goodjava.logging.Logger;
27efb1fcbcb5 move luan.lib to goodjava
Franklin Schmidt <fschmidt@gmail.com>
parents: 1399
diff changeset
70 import goodjava.logging.LoggerFactory;
230
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
71
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
72
1398
67c0e47b5be3 more lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 1397
diff changeset
73 public final class LuceneIndex {
1454
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1453
diff changeset
74 private static final Logger logger = LoggerFactory.getLogger(LuceneIndex.class);
521
8a217fe5b4f3 cleaner LuanState.onClose()
Franklin Schmidt <fschmidt@gmail.com>
parents: 427
diff changeset
75
1397
0dc9837c16be fix lucene issues
Franklin Schmidt <fschmidt@gmail.com>
parents: 1395
diff changeset
76 private static Map<String,Reference<LuceneIndex>> indexes = new HashMap<String,Reference<LuceneIndex>>();
1345
6f8988830098 unique LuceneIndex per dir
Franklin Schmidt <fschmidt@gmail.com>
parents: 1344
diff changeset
77
1397
0dc9837c16be fix lucene issues
Franklin Schmidt <fschmidt@gmail.com>
parents: 1395
diff changeset
78 public static LuceneIndex getLuceneIndex(Luan luan,File indexDir,LuanTable options)
1696
2958cf04d844 remove postgres backup
Franklin Schmidt <fschmidt@gmail.com>
parents: 1690
diff changeset
79 throws LuanException, IOException, ClassNotFoundException
1345
6f8988830098 unique LuceneIndex per dir
Franklin Schmidt <fschmidt@gmail.com>
parents: 1344
diff changeset
80 {
1369
709f7498a363 change Lucene.index() and add Lucene.recover()
Franklin Schmidt <fschmidt@gmail.com>
parents: 1347
diff changeset
81 String key = indexDir.getCanonicalPath();
1345
6f8988830098 unique LuceneIndex per dir
Franklin Schmidt <fschmidt@gmail.com>
parents: 1344
diff changeset
82 synchronized(indexes) {
1397
0dc9837c16be fix lucene issues
Franklin Schmidt <fschmidt@gmail.com>
parents: 1395
diff changeset
83 Reference<LuceneIndex> ref = indexes.get(key);
0dc9837c16be fix lucene issues
Franklin Schmidt <fschmidt@gmail.com>
parents: 1395
diff changeset
84 if( ref != null ) {
0dc9837c16be fix lucene issues
Franklin Schmidt <fschmidt@gmail.com>
parents: 1395
diff changeset
85 LuceneIndex li = ref.get();
1398
67c0e47b5be3 more lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 1397
diff changeset
86 if( li != null ) {
1562
b89212fd04b5 remove table.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1556
diff changeset
87 Object version = options.get(luan,"version");
1676
Franklin Schmidt <fschmidt@gmail.com>
parents: 1674
diff changeset
88 if( (version==null || version.equals(li.version)) && li.indexDir.exists() )
1398
67c0e47b5be3 more lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 1397
diff changeset
89 return li;
1397
0dc9837c16be fix lucene issues
Franklin Schmidt <fschmidt@gmail.com>
parents: 1395
diff changeset
90 li.closeWriter();
1398
67c0e47b5be3 more lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 1397
diff changeset
91 }
1345
6f8988830098 unique LuceneIndex per dir
Franklin Schmidt <fschmidt@gmail.com>
parents: 1344
diff changeset
92 }
1397
0dc9837c16be fix lucene issues
Franklin Schmidt <fschmidt@gmail.com>
parents: 1395
diff changeset
93 LuceneIndex li = new LuceneIndex(luan,indexDir,options);
0dc9837c16be fix lucene issues
Franklin Schmidt <fschmidt@gmail.com>
parents: 1395
diff changeset
94 indexes.put(key, new WeakReference<LuceneIndex>(li));
0dc9837c16be fix lucene issues
Franklin Schmidt <fschmidt@gmail.com>
parents: 1395
diff changeset
95 return li;
1345
6f8988830098 unique LuceneIndex per dir
Franklin Schmidt <fschmidt@gmail.com>
parents: 1344
diff changeset
96 }
6f8988830098 unique LuceneIndex per dir
Franklin Schmidt <fschmidt@gmail.com>
parents: 1344
diff changeset
97 }
6f8988830098 unique LuceneIndex per dir
Franklin Schmidt <fschmidt@gmail.com>
parents: 1344
diff changeset
98
1398
67c0e47b5be3 more lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 1397
diff changeset
99 private static final Version luceneVersion = Version.LUCENE_4_9;
599
50540f0813e2 support default search fields in lucene;
Franklin Schmidt <fschmidt@gmail.com>
parents: 591
diff changeset
100 public static final StringFieldParser STRING_FIELD_PARSER = new StringFieldParser(new KeywordAnalyzer());
1532
060ff7695317 Lucene.type.lowercase
Franklin Schmidt <fschmidt@gmail.com>
parents: 1530
diff changeset
101 public static final StringFieldParser LOWERCASE_FIELD_PARSER = new StringFieldParser(new LowercaseAnalyzer(luceneVersion));
1398
67c0e47b5be3 more lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 1397
diff changeset
102 public static final StringFieldParser ENGLISH_FIELD_PARSER = new StringFieldParser(new EnglishAnalyzer(luceneVersion));
1749
d1e7564a9ce5 improve query parser
Franklin Schmidt <fschmidt@gmail.com>
parents: 1696
diff changeset
103 public static final StringFieldParser SIMPLE_FIELD_PARSER = new StringFieldParser(new SimpleAnalyzer(luceneVersion));
1538
634f6765830e use goodjava/lucene/logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1535
diff changeset
104 private static final SortField ID_SORT = new SortField("id",SortField.Type.LONG);
1539
c27dc6af87ca remove nextId
Franklin Schmidt <fschmidt@gmail.com>
parents: 1538
diff changeset
105 private static final SortField ID_DESC_SORT = new SortField("id",SortField.Type.LONG,true);
230
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
106
1398
67c0e47b5be3 more lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 1397
diff changeset
107 private final Object version;
1393
cc0dbca576dc better logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
108
546
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
109 private final ReentrantLock writeLock = new ReentrantLock();
230
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
110 private final File indexDir;
1528
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents: 1526
diff changeset
111 private GoodIndexWriter writer;
230
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
112 private DirectoryReader reader;
545
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
113 private IndexSearcher searcher;
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
114 private final ThreadLocal<IndexSearcher> threadLocalSearcher = new ThreadLocal<IndexSearcher>();
599
50540f0813e2 support default search fields in lucene;
Franklin Schmidt <fschmidt@gmail.com>
parents: 591
diff changeset
115 private final MultiFieldParser mfp;
1528
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents: 1526
diff changeset
116 private final Analyzer analyzer; // ???
230
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
117
1391
94f48cc76de8 add lucene check
Franklin Schmidt <fschmidt@gmail.com>
parents: 1390
diff changeset
118 private FSDirectory fsDir;
704
90c89138c234 optimize lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 696
diff changeset
119 private int writeCount;
1345
6f8988830098 unique LuceneIndex per dir
Franklin Schmidt <fschmidt@gmail.com>
parents: 1344
diff changeset
120 private AtomicInteger writeCounter = new AtomicInteger();
1528
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents: 1526
diff changeset
121 private final GoodIndexWriterConfig config;
1345
6f8988830098 unique LuceneIndex per dir
Franklin Schmidt <fschmidt@gmail.com>
parents: 1344
diff changeset
122
1397
0dc9837c16be fix lucene issues
Franklin Schmidt <fschmidt@gmail.com>
parents: 1395
diff changeset
123 private boolean wasCreated;
1538
634f6765830e use goodjava/lucene/logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1535
diff changeset
124 private final File logDir;
1548
736ec76bbf42 lucene log work
Franklin Schmidt <fschmidt@gmail.com>
parents: 1544
diff changeset
125 private final long logTime;
1672
8dd8c556c449 backup work
Franklin Schmidt <fschmidt@gmail.com>
parents: 1623
diff changeset
126 private final String name;
8dd8c556c449 backup work
Franklin Schmidt <fschmidt@gmail.com>
parents: 1623
diff changeset
127 private final String domain;
1387
bc40bc9aab3a start postgres backup
Franklin Schmidt <fschmidt@gmail.com>
parents: 1379
diff changeset
128
1397
0dc9837c16be fix lucene issues
Franklin Schmidt <fschmidt@gmail.com>
parents: 1395
diff changeset
129 private LuceneIndex(Luan luan,File indexDir,LuanTable options)
1696
2958cf04d844 remove postgres backup
Franklin Schmidt <fschmidt@gmail.com>
parents: 1690
diff changeset
130 throws LuanException, IOException, ClassNotFoundException
1267
9fa8b8389578 add LuanTable.luan;
Franklin Schmidt <fschmidt@gmail.com>
parents: 1248
diff changeset
131 {
1420
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1410
diff changeset
132 options = new LuanTable(options);
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1410
diff changeset
133 this.version = options.remove("version");
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1410
diff changeset
134 FieldParser defaultFieldParser = (FieldParser)options.remove("default_type");
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1410
diff changeset
135 LuanTable defaultFieldsTbl = Utils.removeTable(options,"default_fields");
1397
0dc9837c16be fix lucene issues
Franklin Schmidt <fschmidt@gmail.com>
parents: 1395
diff changeset
136 String[] defaultFields = defaultFieldsTbl==null ? null : (String[])defaultFieldsTbl.asList().toArray(new String[0]);
1528
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents: 1526
diff changeset
137 LuanFunction supplementer = Utils.removeFunction(options,"supplementer");
1538
634f6765830e use goodjava/lucene/logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1535
diff changeset
138 logDir = (File)options.remove("log_dir");
1548
736ec76bbf42 lucene log work
Franklin Schmidt <fschmidt@gmail.com>
parents: 1544
diff changeset
139 logTime = (Long)options.remove("log_time");
1672
8dd8c556c449 backup work
Franklin Schmidt <fschmidt@gmail.com>
parents: 1623
diff changeset
140 name = (String)options.remove("name");
1420
225808b90cee options handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1410
diff changeset
141 Utils.checkEmpty(options);
1397
0dc9837c16be fix lucene issues
Franklin Schmidt <fschmidt@gmail.com>
parents: 1395
diff changeset
142
1672
8dd8c556c449 backup work
Franklin Schmidt <fschmidt@gmail.com>
parents: 1623
diff changeset
143 {
8dd8c556c449 backup work
Franklin Schmidt <fschmidt@gmail.com>
parents: 1623
diff changeset
144 LuanTable module = (LuanTable)luan.require("luan:http/Http.luan");
8dd8c556c449 backup work
Franklin Schmidt <fschmidt@gmail.com>
parents: 1623
diff changeset
145 String domain = (String)module.get(luan,"domain");
8dd8c556c449 backup work
Franklin Schmidt <fschmidt@gmail.com>
parents: 1623
diff changeset
146 if( domain == null )
8dd8c556c449 backup work
Franklin Schmidt <fschmidt@gmail.com>
parents: 1623
diff changeset
147 domain = "localhost";
8dd8c556c449 backup work
Franklin Schmidt <fschmidt@gmail.com>
parents: 1623
diff changeset
148 this.domain = domain;
8dd8c556c449 backup work
Franklin Schmidt <fschmidt@gmail.com>
parents: 1623
diff changeset
149 }
8dd8c556c449 backup work
Franklin Schmidt <fschmidt@gmail.com>
parents: 1623
diff changeset
150
599
50540f0813e2 support default search fields in lucene;
Franklin Schmidt <fschmidt@gmail.com>
parents: 591
diff changeset
151 mfp = defaultFieldParser==null ? new MultiFieldParser() : new MultiFieldParser(defaultFieldParser,defaultFields);
544
c5a93767cc5c lucene overhaul, untested
Franklin Schmidt <fschmidt@gmail.com>
parents: 527
diff changeset
152 mfp.fields.put( "type", STRING_FIELD_PARSER );
c5a93767cc5c lucene overhaul, untested
Franklin Schmidt <fschmidt@gmail.com>
parents: 527
diff changeset
153 mfp.fields.put( "id", NumberFieldParser.LONG );
233
ef39bc4d3f70 basic lucene works
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 232
diff changeset
154 this.indexDir = indexDir;
599
50540f0813e2 support default search fields in lucene;
Franklin Schmidt <fschmidt@gmail.com>
parents: 591
diff changeset
155 Analyzer analyzer = STRING_FIELD_PARSER.analyzer;
50540f0813e2 support default search fields in lucene;
Franklin Schmidt <fschmidt@gmail.com>
parents: 591
diff changeset
156 if( defaultFieldParser instanceof StringFieldParser ) {
50540f0813e2 support default search fields in lucene;
Franklin Schmidt <fschmidt@gmail.com>
parents: 591
diff changeset
157 StringFieldParser sfp = (StringFieldParser)defaultFieldParser;
50540f0813e2 support default search fields in lucene;
Franklin Schmidt <fschmidt@gmail.com>
parents: 591
diff changeset
158 analyzer = sfp.analyzer;
50540f0813e2 support default search fields in lucene;
Franklin Schmidt <fschmidt@gmail.com>
parents: 591
diff changeset
159 }
624
8281a248c47e add lucene highlighter
Franklin Schmidt <fschmidt@gmail.com>
parents: 622
diff changeset
160 this.analyzer = analyzer;
1685
46cf5137cb6b misc fixes
Franklin Schmidt <fschmidt@gmail.com>
parents: 1676
diff changeset
161 this.config = new SupplementingConfig(luceneVersion,mfp,supplementer);
1397
0dc9837c16be fix lucene issues
Franklin Schmidt <fschmidt@gmail.com>
parents: 1395
diff changeset
162 wasCreated = reopen();
754
1a101ac9ea46 add lucene restore
Franklin Schmidt <fschmidt@gmail.com>
parents: 730
diff changeset
163 }
1a101ac9ea46 add lucene restore
Franklin Schmidt <fschmidt@gmail.com>
parents: 730
diff changeset
164
1390
179c4882c6b6 backup work
Franklin Schmidt <fschmidt@gmail.com>
parents: 1388
diff changeset
165 public boolean reopen() throws IOException {
1391
94f48cc76de8 add lucene check
Franklin Schmidt <fschmidt@gmail.com>
parents: 1390
diff changeset
166 fsDir = FSDirectory.open(indexDir);
94f48cc76de8 add lucene check
Franklin Schmidt <fschmidt@gmail.com>
parents: 1390
diff changeset
167 boolean wasCreated = !fsDir.getDirectory().exists();
1528
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents: 1526
diff changeset
168 writer = new LuceneIndexWriter(fsDir,config);
1764
527c53b91a50 lucene error handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1763
diff changeset
169 try {
527c53b91a50 lucene error handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1763
diff changeset
170 if( logDir != null ) {
527c53b91a50 lucene error handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1763
diff changeset
171 if( BackupIndexWriter.backupDomains == null ) {
527c53b91a50 lucene error handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1763
diff changeset
172 writer = new LoggingIndexWriter((LuceneIndexWriter)writer,logDir,logTime);
527c53b91a50 lucene error handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1763
diff changeset
173 } else {
527c53b91a50 lucene error handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1763
diff changeset
174 writer = BackupIndexWriter.newWithRestore((LuceneIndexWriter)writer,logDir,logTime,domain,name);
527c53b91a50 lucene error handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1763
diff changeset
175 }
1672
8dd8c556c449 backup work
Franklin Schmidt <fschmidt@gmail.com>
parents: 1623
diff changeset
176 }
1764
527c53b91a50 lucene error handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1763
diff changeset
177 reader = DirectoryReader.open(fsDir);
527c53b91a50 lucene error handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1763
diff changeset
178 searcher = new IndexSearcher(reader);
527c53b91a50 lucene error handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1763
diff changeset
179 initId();
527c53b91a50 lucene error handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1763
diff changeset
180 return wasCreated;
527c53b91a50 lucene error handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1763
diff changeset
181 } catch(IOException e) {
527c53b91a50 lucene error handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1763
diff changeset
182 writer.close();
527c53b91a50 lucene error handling
Franklin Schmidt <fschmidt@gmail.com>
parents: 1763
diff changeset
183 throw e;
1672
8dd8c556c449 backup work
Franklin Schmidt <fschmidt@gmail.com>
parents: 1623
diff changeset
184 }
233
ef39bc4d3f70 basic lucene works
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 232
diff changeset
185 }
ef39bc4d3f70 basic lucene works
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 232
diff changeset
186
704
90c89138c234 optimize lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 696
diff changeset
187 private void wrote() {
1345
6f8988830098 unique LuceneIndex per dir
Franklin Schmidt <fschmidt@gmail.com>
parents: 1344
diff changeset
188 writeCounter.incrementAndGet();
704
90c89138c234 optimize lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 696
diff changeset
189 }
230
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
190
1696
2958cf04d844 remove postgres backup
Franklin Schmidt <fschmidt@gmail.com>
parents: 1690
diff changeset
191 public void delete_all() throws IOException {
546
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
192 boolean commit = !writeLock.isHeldByCurrentThread();
252
3896138955b1 web testing...
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 233
diff changeset
193 writeLock.lock();
3896138955b1 web testing...
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 233
diff changeset
194 try {
3896138955b1 web testing...
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 233
diff changeset
195 writer.deleteAll();
1539
c27dc6af87ca remove nextId
Franklin Schmidt <fschmidt@gmail.com>
parents: 1538
diff changeset
196 id = 0;
546
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
197 if(commit) writer.commit();
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
198 } finally {
704
90c89138c234 optimize lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 696
diff changeset
199 wrote();
546
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
200 writeLock.unlock();
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
201 }
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
202 }
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
203
1346
Franklin Schmidt <fschmidt@gmail.com>
parents: 1345
diff changeset
204 public void delete(String queryStr)
1696
2958cf04d844 remove postgres backup
Franklin Schmidt <fschmidt@gmail.com>
parents: 1690
diff changeset
205 throws IOException, ParseException, LuanException
1341
a015a0b5c388 add Html.decode(), Lucene.count_tokens(), lucene boosts, Sql.database.set()
Franklin Schmidt <fschmidt@gmail.com>
parents: 1337
diff changeset
206 {
1459
b04b8fc5f4f4 GoodQueryParser
Franklin Schmidt <fschmidt@gmail.com>
parents: 1458
diff changeset
207 Query query = GoodQueryParser.parseQuery(mfp,queryStr);
546
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
208
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
209 boolean commit = !writeLock.isHeldByCurrentThread();
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
210 writeLock.lock();
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
211 try {
547
0be287ab0309 add lucene/Versioning and simplify Lucene fn names
Franklin Schmidt <fschmidt@gmail.com>
parents: 546
diff changeset
212 writer.deleteDocuments(query);
546
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
213 if(commit) writer.commit();
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
214 } finally {
704
90c89138c234 optimize lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 696
diff changeset
215 wrote();
546
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
216 writeLock.unlock();
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
217 }
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
218 }
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
219
1535
e73b72a510b4 Lucene reindex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1533
diff changeset
220 public void reindex(String queryStr)
e73b72a510b4 Lucene reindex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1533
diff changeset
221 throws IOException, ParseException
e73b72a510b4 Lucene reindex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1533
diff changeset
222 {
e73b72a510b4 Lucene reindex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1533
diff changeset
223 Query query = GoodQueryParser.parseQuery(mfp,queryStr);
e73b72a510b4 Lucene reindex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1533
diff changeset
224
e73b72a510b4 Lucene reindex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1533
diff changeset
225 boolean commit = !writeLock.isHeldByCurrentThread();
e73b72a510b4 Lucene reindex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1533
diff changeset
226 writeLock.lock();
e73b72a510b4 Lucene reindex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1533
diff changeset
227 try {
e73b72a510b4 Lucene reindex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1533
diff changeset
228 writer.reindexDocuments("id",query);
e73b72a510b4 Lucene reindex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1533
diff changeset
229 if(commit) writer.commit();
e73b72a510b4 Lucene reindex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1533
diff changeset
230 } finally {
e73b72a510b4 Lucene reindex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1533
diff changeset
231 wrote();
e73b72a510b4 Lucene reindex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1533
diff changeset
232 writeLock.unlock();
e73b72a510b4 Lucene reindex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1533
diff changeset
233 }
e73b72a510b4 Lucene reindex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1533
diff changeset
234 }
e73b72a510b4 Lucene reindex
Franklin Schmidt <fschmidt@gmail.com>
parents: 1533
diff changeset
235
1687
f48db13ae2d9 unlogged lucene support
Franklin Schmidt <fschmidt@gmail.com>
parents: 1685
diff changeset
236 public void save( Luan luan, LuanTable doc, LuanTable unstored, Map<String,Float> boosts )
1696
2958cf04d844 remove postgres backup
Franklin Schmidt <fschmidt@gmail.com>
parents: 1690
diff changeset
237 throws LuanException, IOException
1341
a015a0b5c388 add Html.decode(), Lucene.count_tokens(), lucene boosts, Sql.database.set()
Franklin Schmidt <fschmidt@gmail.com>
parents: 1337
diff changeset
238 {
1562
b89212fd04b5 remove table.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1556
diff changeset
239 Object obj = doc.get(luan,"id");
601
d36027b41570 better error message
Franklin Schmidt <fschmidt@gmail.com>
parents: 599
diff changeset
240 Long id;
d36027b41570 better error message
Franklin Schmidt <fschmidt@gmail.com>
parents: 599
diff changeset
241 try {
d36027b41570 better error message
Franklin Schmidt <fschmidt@gmail.com>
parents: 599
diff changeset
242 id = (Long)obj;
d36027b41570 better error message
Franklin Schmidt <fschmidt@gmail.com>
parents: 599
diff changeset
243 } catch(ClassCastException e) {
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 624
diff changeset
244 throw new LuanException("id should be Long but is "+obj.getClass().getSimpleName());
601
d36027b41570 better error message
Franklin Schmidt <fschmidt@gmail.com>
parents: 599
diff changeset
245 }
546
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
246
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
247 boolean commit = !writeLock.isHeldByCurrentThread();
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
248 writeLock.lock();
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
249 try {
1687
f48db13ae2d9 unlogged lucene support
Franklin Schmidt <fschmidt@gmail.com>
parents: 1685
diff changeset
250 if( unstored!=null || boosts!=null ) {
f48db13ae2d9 unlogged lucene support
Franklin Schmidt <fschmidt@gmail.com>
parents: 1685
diff changeset
251 if( unstored == null )
f48db13ae2d9 unlogged lucene support
Franklin Schmidt <fschmidt@gmail.com>
parents: 1685
diff changeset
252 throw new LuanException("unstored required with boosts");
f48db13ae2d9 unlogged lucene support
Franklin Schmidt <fschmidt@gmail.com>
parents: 1685
diff changeset
253 if( boosts == null )
f48db13ae2d9 unlogged lucene support
Franklin Schmidt <fschmidt@gmail.com>
parents: 1685
diff changeset
254 throw new LuanException("boosts required with unstored");
f48db13ae2d9 unlogged lucene support
Franklin Schmidt <fschmidt@gmail.com>
parents: 1685
diff changeset
255 if( id != null )
f48db13ae2d9 unlogged lucene support
Franklin Schmidt <fschmidt@gmail.com>
parents: 1685
diff changeset
256 throw new LuanException("update not supported");
f48db13ae2d9 unlogged lucene support
Franklin Schmidt <fschmidt@gmail.com>
parents: 1685
diff changeset
257 if( !(writer instanceof LuceneIndexWriter) )
f48db13ae2d9 unlogged lucene support
Franklin Schmidt <fschmidt@gmail.com>
parents: 1685
diff changeset
258 throw new LuanException("not supported with index logging");
f48db13ae2d9 unlogged lucene support
Franklin Schmidt <fschmidt@gmail.com>
parents: 1685
diff changeset
259 id = ++this.id;
f48db13ae2d9 unlogged lucene support
Franklin Schmidt <fschmidt@gmail.com>
parents: 1685
diff changeset
260 doc.put(luan,"id",id);
f48db13ae2d9 unlogged lucene support
Franklin Schmidt <fschmidt@gmail.com>
parents: 1685
diff changeset
261 LuceneIndexWriter liw = (LuceneIndexWriter)writer;
f48db13ae2d9 unlogged lucene support
Franklin Schmidt <fschmidt@gmail.com>
parents: 1685
diff changeset
262 liw.addDocument( toLucene(doc), toLucene(unstored), boosts );
f48db13ae2d9 unlogged lucene support
Franklin Schmidt <fschmidt@gmail.com>
parents: 1685
diff changeset
263 } else if( id == null ) {
1539
c27dc6af87ca remove nextId
Franklin Schmidt <fschmidt@gmail.com>
parents: 1538
diff changeset
264 id = ++this.id;
1562
b89212fd04b5 remove table.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1556
diff changeset
265 doc.put(luan,"id",id);
1528
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents: 1526
diff changeset
266 writer.addDocument(toLucene(doc));
546
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
267 } else {
1528
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents: 1526
diff changeset
268 writer.updateDocument( "id", toLucene(doc) );
546
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
269 }
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
270 if(commit) writer.commit();
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
271 } finally {
704
90c89138c234 optimize lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 696
diff changeset
272 wrote();
546
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
273 writeLock.unlock();
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
274 }
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
275 }
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
276
1533
28f06ac6ce39 add not_in_transaction
Franklin Schmidt <fschmidt@gmail.com>
parents: 1532
diff changeset
277 public boolean is_in_transaction() {
28f06ac6ce39 add not_in_transaction
Franklin Schmidt <fschmidt@gmail.com>
parents: 1532
diff changeset
278 return writeLock.isHeldByCurrentThread();
28f06ac6ce39 add not_in_transaction
Franklin Schmidt <fschmidt@gmail.com>
parents: 1532
diff changeset
279 }
28f06ac6ce39 add not_in_transaction
Franklin Schmidt <fschmidt@gmail.com>
parents: 1532
diff changeset
280
1563
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1562
diff changeset
281 public Object run_in_transaction(Luan luan,LuanFunction fn)
1696
2958cf04d844 remove postgres backup
Franklin Schmidt <fschmidt@gmail.com>
parents: 1690
diff changeset
282 throws IOException, LuanException
1392
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1391
diff changeset
283 {
546
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
284 boolean commit = !writeLock.isHeldByCurrentThread();
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
285 writeLock.lock();
1387
bc40bc9aab3a start postgres backup
Franklin Schmidt <fschmidt@gmail.com>
parents: 1379
diff changeset
286 boolean ok = false;
546
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
287 try {
1563
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1562
diff changeset
288 Object rtn = fn.call(luan);
1387
bc40bc9aab3a start postgres backup
Franklin Schmidt <fschmidt@gmail.com>
parents: 1379
diff changeset
289 ok = true;
bc40bc9aab3a start postgres backup
Franklin Schmidt <fschmidt@gmail.com>
parents: 1379
diff changeset
290 if(commit) {
bc40bc9aab3a start postgres backup
Franklin Schmidt <fschmidt@gmail.com>
parents: 1379
diff changeset
291 writer.commit();
bc40bc9aab3a start postgres backup
Franklin Schmidt <fschmidt@gmail.com>
parents: 1379
diff changeset
292 }
1379
87a3738d7cc5 run_in_transaction
Franklin Schmidt <fschmidt@gmail.com>
parents: 1369
diff changeset
293 return rtn;
252
3896138955b1 web testing...
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 233
diff changeset
294 } finally {
1387
bc40bc9aab3a start postgres backup
Franklin Schmidt <fschmidt@gmail.com>
parents: 1379
diff changeset
295 if( !ok && commit ) {
bc40bc9aab3a start postgres backup
Franklin Schmidt <fschmidt@gmail.com>
parents: 1379
diff changeset
296 writer.rollback();
bc40bc9aab3a start postgres backup
Franklin Schmidt <fschmidt@gmail.com>
parents: 1379
diff changeset
297 reopen();
bc40bc9aab3a start postgres backup
Franklin Schmidt <fschmidt@gmail.com>
parents: 1379
diff changeset
298 }
704
90c89138c234 optimize lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 696
diff changeset
299 wrote();
252
3896138955b1 web testing...
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 233
diff changeset
300 writeLock.unlock();
3896138955b1 web testing...
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 233
diff changeset
301 }
3896138955b1 web testing...
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 233
diff changeset
302 }
3896138955b1 web testing...
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 233
diff changeset
303
1387
bc40bc9aab3a start postgres backup
Franklin Schmidt <fschmidt@gmail.com>
parents: 1379
diff changeset
304 // ???
1563
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1562
diff changeset
305 public Object run_in_lock(Luan luan,LuanFunction fn) throws IOException, LuanException {
756
9092e52f94eb better synchronization for lucene restore
Franklin Schmidt <fschmidt@gmail.com>
parents: 754
diff changeset
306 if( writeLock.isHeldByCurrentThread() )
9092e52f94eb better synchronization for lucene restore
Franklin Schmidt <fschmidt@gmail.com>
parents: 754
diff changeset
307 throw new RuntimeException();
9092e52f94eb better synchronization for lucene restore
Franklin Schmidt <fschmidt@gmail.com>
parents: 754
diff changeset
308 writeLock.lock();
9092e52f94eb better synchronization for lucene restore
Franklin Schmidt <fschmidt@gmail.com>
parents: 754
diff changeset
309 try {
9092e52f94eb better synchronization for lucene restore
Franklin Schmidt <fschmidt@gmail.com>
parents: 754
diff changeset
310 synchronized(this) {
1563
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1562
diff changeset
311 return fn.call(luan);
756
9092e52f94eb better synchronization for lucene restore
Franklin Schmidt <fschmidt@gmail.com>
parents: 754
diff changeset
312 }
9092e52f94eb better synchronization for lucene restore
Franklin Schmidt <fschmidt@gmail.com>
parents: 754
diff changeset
313 } finally {
9092e52f94eb better synchronization for lucene restore
Franklin Schmidt <fschmidt@gmail.com>
parents: 754
diff changeset
314 wrote();
9092e52f94eb better synchronization for lucene restore
Franklin Schmidt <fschmidt@gmail.com>
parents: 754
diff changeset
315 writeLock.unlock();
9092e52f94eb better synchronization for lucene restore
Franklin Schmidt <fschmidt@gmail.com>
parents: 754
diff changeset
316 }
9092e52f94eb better synchronization for lucene restore
Franklin Schmidt <fschmidt@gmail.com>
parents: 754
diff changeset
317 }
9092e52f94eb better synchronization for lucene restore
Franklin Schmidt <fschmidt@gmail.com>
parents: 754
diff changeset
318
230
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
319
754
1a101ac9ea46 add lucene restore
Franklin Schmidt <fschmidt@gmail.com>
parents: 730
diff changeset
320 private long id;
230
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
321
1388
2024d23ddd64 add restore_from_postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1387
diff changeset
322 private void initId() throws IOException {
1539
c27dc6af87ca remove nextId
Franklin Schmidt <fschmidt@gmail.com>
parents: 1538
diff changeset
323 TopDocs td = searcher.search(new MatchAllDocsQuery(),1,new Sort(ID_DESC_SORT));
c27dc6af87ca remove nextId
Franklin Schmidt <fschmidt@gmail.com>
parents: 1538
diff changeset
324 switch(td.scoreDocs.length) {
230
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
325 case 0:
754
1a101ac9ea46 add lucene restore
Franklin Schmidt <fschmidt@gmail.com>
parents: 730
diff changeset
326 id = 0;
1a101ac9ea46 add lucene restore
Franklin Schmidt <fschmidt@gmail.com>
parents: 730
diff changeset
327 break;
230
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
328 case 1:
1539
c27dc6af87ca remove nextId
Franklin Schmidt <fschmidt@gmail.com>
parents: 1538
diff changeset
329 id = (Long)searcher.doc(td.scoreDocs[0].doc).getField("id").numericValue();
230
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
330 break;
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
331 default:
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
332 throw new RuntimeException();
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
333 }
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
334 }
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
335
1129
3234a14bb1f8 minor lucene changes
Franklin Schmidt <fschmidt@gmail.com>
parents: 1111
diff changeset
336 public SnapshotDeletionPolicy snapshotDeletionPolicy() {
1539
c27dc6af87ca remove nextId
Franklin Schmidt <fschmidt@gmail.com>
parents: 1538
diff changeset
337 return (SnapshotDeletionPolicy)writer.getLuceneIndexWriter().getConfig().getIndexDeletionPolicy();
1129
3234a14bb1f8 minor lucene changes
Franklin Schmidt <fschmidt@gmail.com>
parents: 1111
diff changeset
338 }
3234a14bb1f8 minor lucene changes
Franklin Schmidt <fschmidt@gmail.com>
parents: 1111
diff changeset
339
1563
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1562
diff changeset
340 public Object snapshot(Luan luan,LuanFunction fn) throws LuanException, IOException {
1528
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents: 1526
diff changeset
341 SnapshotDeletionPolicy snapshotDeletionPolicy = snapshotDeletionPolicy();
707
1ed9e55f0be8 replace lucene.backup with lucene.zip implemented in luan, and add lucene.snapshot
Franklin Schmidt <fschmidt@gmail.com>
parents: 704
diff changeset
342 IndexCommit ic = snapshotDeletionPolicy.snapshot();
1ed9e55f0be8 replace lucene.backup with lucene.zip implemented in luan, and add lucene.snapshot
Franklin Schmidt <fschmidt@gmail.com>
parents: 704
diff changeset
343 try {
1391
94f48cc76de8 add lucene check
Franklin Schmidt <fschmidt@gmail.com>
parents: 1390
diff changeset
344 String dir = fsDir.getDirectory().toString();
1562
b89212fd04b5 remove table.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1556
diff changeset
345 LuanTable fileNames = new LuanTable(new ArrayList(ic.getFileNames()));
1563
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1562
diff changeset
346 return fn.call(luan,dir,fileNames);
707
1ed9e55f0be8 replace lucene.backup with lucene.zip implemented in luan, and add lucene.snapshot
Franklin Schmidt <fschmidt@gmail.com>
parents: 704
diff changeset
347 } finally {
1ed9e55f0be8 replace lucene.backup with lucene.zip implemented in luan, and add lucene.snapshot
Franklin Schmidt <fschmidt@gmail.com>
parents: 704
diff changeset
348 snapshotDeletionPolicy.release(ic);
1ed9e55f0be8 replace lucene.backup with lucene.zip implemented in luan, and add lucene.snapshot
Franklin Schmidt <fschmidt@gmail.com>
parents: 704
diff changeset
349 }
1ed9e55f0be8 replace lucene.backup with lucene.zip implemented in luan, and add lucene.snapshot
Franklin Schmidt <fschmidt@gmail.com>
parents: 704
diff changeset
350 }
230
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
351
1544
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
352 public void tag(String tag) throws IOException {
1556
52241b69c339 lucene logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1553
diff changeset
353 boolean commit = !writeLock.isHeldByCurrentThread();
52241b69c339 lucene logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1553
diff changeset
354 writeLock.lock();
52241b69c339 lucene logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1553
diff changeset
355 try {
52241b69c339 lucene logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1553
diff changeset
356 writer.tag(tag);
52241b69c339 lucene logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1553
diff changeset
357 if(commit) writer.commit();
52241b69c339 lucene logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1553
diff changeset
358 } finally {
52241b69c339 lucene logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1553
diff changeset
359 writeLock.unlock();
52241b69c339 lucene logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1553
diff changeset
360 }
1544
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
361 }
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
362
230
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
363
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
364
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
365 public String to_string() {
1539
c27dc6af87ca remove nextId
Franklin Schmidt <fschmidt@gmail.com>
parents: 1538
diff changeset
366 return writer.getLuceneIndexWriter().getDirectory().toString();
230
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
367 }
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
368
1398
67c0e47b5be3 more lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 1397
diff changeset
369 protected void finalize() throws Throwable {
67c0e47b5be3 more lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 1397
diff changeset
370 close();
67c0e47b5be3 more lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 1397
diff changeset
371 super.finalize();
521
8a217fe5b4f3 cleaner LuanState.onClose()
Franklin Schmidt <fschmidt@gmail.com>
parents: 427
diff changeset
372 }
8a217fe5b4f3 cleaner LuanState.onClose()
Franklin Schmidt <fschmidt@gmail.com>
parents: 427
diff changeset
373
1763
164c6ea53147 fix change_password
Franklin Schmidt <fschmidt@gmail.com>
parents: 1749
diff changeset
374 public void close_down() throws IOException {
164c6ea53147 fix change_password
Franklin Schmidt <fschmidt@gmail.com>
parents: 1749
diff changeset
375 String key = indexDir.getCanonicalPath();
164c6ea53147 fix change_password
Franklin Schmidt <fschmidt@gmail.com>
parents: 1749
diff changeset
376 synchronized(indexes) {
164c6ea53147 fix change_password
Franklin Schmidt <fschmidt@gmail.com>
parents: 1749
diff changeset
377 indexes.remove(key);
164c6ea53147 fix change_password
Franklin Schmidt <fschmidt@gmail.com>
parents: 1749
diff changeset
378 }
164c6ea53147 fix change_password
Franklin Schmidt <fschmidt@gmail.com>
parents: 1749
diff changeset
379 close();
164c6ea53147 fix change_password
Franklin Schmidt <fschmidt@gmail.com>
parents: 1749
diff changeset
380 }
164c6ea53147 fix change_password
Franklin Schmidt <fschmidt@gmail.com>
parents: 1749
diff changeset
381
1696
2958cf04d844 remove postgres backup
Franklin Schmidt <fschmidt@gmail.com>
parents: 1690
diff changeset
382 public void close() throws IOException {
1398
67c0e47b5be3 more lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 1397
diff changeset
383 closeWriter();
1392
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1391
diff changeset
384 reader.close();
230
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
385 }
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
386
1696
2958cf04d844 remove postgres backup
Franklin Schmidt <fschmidt@gmail.com>
parents: 1690
diff changeset
387 private void closeWriter() throws IOException {
1397
0dc9837c16be fix lucene issues
Franklin Schmidt <fschmidt@gmail.com>
parents: 1395
diff changeset
388 writeLock.lock();
0dc9837c16be fix lucene issues
Franklin Schmidt <fschmidt@gmail.com>
parents: 1395
diff changeset
389 try {
0dc9837c16be fix lucene issues
Franklin Schmidt <fschmidt@gmail.com>
parents: 1395
diff changeset
390 writer.close();
0dc9837c16be fix lucene issues
Franklin Schmidt <fschmidt@gmail.com>
parents: 1395
diff changeset
391 } finally {
0dc9837c16be fix lucene issues
Franklin Schmidt <fschmidt@gmail.com>
parents: 1395
diff changeset
392 writeLock.unlock();
0dc9837c16be fix lucene issues
Franklin Schmidt <fschmidt@gmail.com>
parents: 1395
diff changeset
393 }
0dc9837c16be fix lucene issues
Franklin Schmidt <fschmidt@gmail.com>
parents: 1395
diff changeset
394 }
0dc9837c16be fix lucene issues
Franklin Schmidt <fschmidt@gmail.com>
parents: 1395
diff changeset
395
312
d34be4588556 add lucene query parsing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 303
diff changeset
396
545
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
397 private static class DocFn extends LuanFunction {
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
398 final IndexSearcher searcher;
1342
60599adc27b8 add lucene search options
Franklin Schmidt <fschmidt@gmail.com>
parents: 1341
diff changeset
399 final Query query;
545
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
400 int docID;
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
401
1563
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1562
diff changeset
402 DocFn(IndexSearcher searcher,Query query) {
545
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
403 this.searcher = searcher;
1342
60599adc27b8 add lucene search options
Franklin Schmidt <fschmidt@gmail.com>
parents: 1341
diff changeset
404 this.query = query;
545
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
405 }
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
406
1563
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1562
diff changeset
407 @Override public Object call(Luan luan,Object[] args) throws LuanException {
545
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
408 try {
1562
b89212fd04b5 remove table.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1556
diff changeset
409 LuanTable doc = toTable(searcher.doc(docID));
1342
60599adc27b8 add lucene search options
Franklin Schmidt <fschmidt@gmail.com>
parents: 1341
diff changeset
410 if( args.length > 0 && "explain".equals(args[0]) ) {
60599adc27b8 add lucene search options
Franklin Schmidt <fschmidt@gmail.com>
parents: 1341
diff changeset
411 Explanation explanation = searcher.explain(query,docID);
60599adc27b8 add lucene search options
Franklin Schmidt <fschmidt@gmail.com>
parents: 1341
diff changeset
412 return new Object[]{doc,explanation};
60599adc27b8 add lucene search options
Franklin Schmidt <fschmidt@gmail.com>
parents: 1341
diff changeset
413 } else {
60599adc27b8 add lucene search options
Franklin Schmidt <fschmidt@gmail.com>
parents: 1341
diff changeset
414 return doc;
60599adc27b8 add lucene search options
Franklin Schmidt <fschmidt@gmail.com>
parents: 1341
diff changeset
415 }
545
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
416 } catch(IOException e) {
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 624
diff changeset
417 throw new LuanException(e);
545
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
418 }
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
419 }
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
420 }
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
421
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
422 private static abstract class MyCollector extends Collector {
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
423 int docBase;
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
424 int i = 0;
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
425
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
426 @Override public void setScorer(Scorer scorer) {}
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
427 @Override public void setNextReader(AtomicReaderContext context) {
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
428 this.docBase = context.docBase;
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
429 }
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
430 @Override public boolean acceptsDocsOutOfOrder() {
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
431 return true;
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
432 }
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
433 }
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
434
546
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
435 private synchronized IndexSearcher openSearcher() throws IOException {
1345
6f8988830098 unique LuceneIndex per dir
Franklin Schmidt <fschmidt@gmail.com>
parents: 1344
diff changeset
436 int gwc = writeCounter.get();
704
90c89138c234 optimize lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 696
diff changeset
437 if( writeCount != gwc ) {
90c89138c234 optimize lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 696
diff changeset
438 writeCount = gwc;
90c89138c234 optimize lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 696
diff changeset
439 DirectoryReader newReader = DirectoryReader.openIfChanged(reader);
1539
c27dc6af87ca remove nextId
Franklin Schmidt <fschmidt@gmail.com>
parents: 1538
diff changeset
440 // DirectoryReader newReader = DirectoryReader.openIfChanged(reader,writer.getLuceneIndexWriter(),true);
704
90c89138c234 optimize lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 696
diff changeset
441 if( newReader != null ) {
90c89138c234 optimize lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 696
diff changeset
442 reader.decRef();
90c89138c234 optimize lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 696
diff changeset
443 reader = newReader;
90c89138c234 optimize lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 696
diff changeset
444 searcher = new IndexSearcher(reader);
90c89138c234 optimize lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 696
diff changeset
445 }
546
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
446 }
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
447 reader.incRef();
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
448 return searcher;
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
449 }
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
450
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
451 // call in finally block
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
452 private static void close(IndexSearcher searcher) throws IOException {
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
453 searcher.getIndexReader().decRef();
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
454 }
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
455
591
790d5de23042 add "strict" param to Io.repr();
Franklin Schmidt <fschmidt@gmail.com>
parents: 578
diff changeset
456 public void ensure_open() throws IOException {
790d5de23042 add "strict" param to Io.repr();
Franklin Schmidt <fschmidt@gmail.com>
parents: 578
diff changeset
457 close(openSearcher());
790d5de23042 add "strict" param to Io.repr();
Franklin Schmidt <fschmidt@gmail.com>
parents: 578
diff changeset
458 }
790d5de23042 add "strict" param to Io.repr();
Franklin Schmidt <fschmidt@gmail.com>
parents: 578
diff changeset
459
1771
c62324841dfb improve NumberFieldParser and add key map lucene query
Franklin Schmidt <fschmidt@gmail.com>
parents: 1764
diff changeset
460 public int advanced_search( final Luan luan, Object queryStr, LuanFunction fn, Integer n, String sortStr )
1341
a015a0b5c388 add Html.decode(), Lucene.count_tokens(), lucene boosts, Sql.database.set()
Franklin Schmidt <fschmidt@gmail.com>
parents: 1337
diff changeset
461 throws LuanException, IOException, ParseException
a015a0b5c388 add Html.decode(), Lucene.count_tokens(), lucene boosts, Sql.database.set()
Franklin Schmidt <fschmidt@gmail.com>
parents: 1337
diff changeset
462 {
1771
c62324841dfb improve NumberFieldParser and add key map lucene query
Franklin Schmidt <fschmidt@gmail.com>
parents: 1764
diff changeset
463 Query query;
c62324841dfb improve NumberFieldParser and add key map lucene query
Franklin Schmidt <fschmidt@gmail.com>
parents: 1764
diff changeset
464 if( queryStr instanceof String ) {
c62324841dfb improve NumberFieldParser and add key map lucene query
Franklin Schmidt <fschmidt@gmail.com>
parents: 1764
diff changeset
465 query = GoodQueryParser.parseQuery(mfp,(String)queryStr);
c62324841dfb improve NumberFieldParser and add key map lucene query
Franklin Schmidt <fschmidt@gmail.com>
parents: 1764
diff changeset
466 } else if( queryStr instanceof LuanTable ) {
c62324841dfb improve NumberFieldParser and add key map lucene query
Franklin Schmidt <fschmidt@gmail.com>
parents: 1764
diff changeset
467 LuanTable t = (LuanTable)queryStr;
c62324841dfb improve NumberFieldParser and add key map lucene query
Franklin Schmidt <fschmidt@gmail.com>
parents: 1764
diff changeset
468 BooleanQuery bq = new BooleanQuery();
c62324841dfb improve NumberFieldParser and add key map lucene query
Franklin Schmidt <fschmidt@gmail.com>
parents: 1764
diff changeset
469 for( Map.Entry<Object,Object> entry : t.rawIterable() ) {
c62324841dfb improve NumberFieldParser and add key map lucene query
Franklin Schmidt <fschmidt@gmail.com>
parents: 1764
diff changeset
470 String name = (String)entry.getKey();
c62324841dfb improve NumberFieldParser and add key map lucene query
Franklin Schmidt <fschmidt@gmail.com>
parents: 1764
diff changeset
471 Object value = entry.getValue();
c62324841dfb improve NumberFieldParser and add key map lucene query
Franklin Schmidt <fschmidt@gmail.com>
parents: 1764
diff changeset
472 Query q = new TermQuery( LuceneUtils.term(name,value) );
c62324841dfb improve NumberFieldParser and add key map lucene query
Franklin Schmidt <fschmidt@gmail.com>
parents: 1764
diff changeset
473 bq.add( q, BooleanClause.Occur.MUST );
c62324841dfb improve NumberFieldParser and add key map lucene query
Franklin Schmidt <fschmidt@gmail.com>
parents: 1764
diff changeset
474 }
c62324841dfb improve NumberFieldParser and add key map lucene query
Franklin Schmidt <fschmidt@gmail.com>
parents: 1764
diff changeset
475 query = bq;
c62324841dfb improve NumberFieldParser and add key map lucene query
Franklin Schmidt <fschmidt@gmail.com>
parents: 1764
diff changeset
476 } else
c62324841dfb improve NumberFieldParser and add key map lucene query
Franklin Schmidt <fschmidt@gmail.com>
parents: 1764
diff changeset
477 throw new LuanException("query must be string or table");
545
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
478 IndexSearcher searcher = threadLocalSearcher.get();
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
479 boolean inTransaction = searcher != null;
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
480 if( !inTransaction )
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
481 searcher = openSearcher();
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
482 try {
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
483 if( fn!=null && n==null ) {
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
484 if( sortStr != null )
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 624
diff changeset
485 throw new LuanException("sort must be nil when n is nil");
1563
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1562
diff changeset
486 final DocFn docFn = new DocFn(searcher,query);
545
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
487 MyCollector col = new MyCollector() {
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
488 @Override public void collect(int doc) {
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
489 try {
547
0be287ab0309 add lucene/Versioning and simplify Lucene fn names
Franklin Schmidt <fschmidt@gmail.com>
parents: 546
diff changeset
490 docFn.docID = docBase + doc;
1563
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1562
diff changeset
491 fn.call(luan,++i,docFn);
545
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
492 } catch(LuanException e) {
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
493 throw new LuanRuntimeException(e);
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
494 }
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
495 }
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
496 };
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
497 try {
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
498 searcher.search(query,col);
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
499 } catch(LuanRuntimeException e) {
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
500 throw (LuanException)e.getCause();
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
501 }
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
502 return col.i;
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
503 }
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
504 if( fn==null || n==0 ) {
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
505 TotalHitCountCollector thcc = new TotalHitCountCollector();
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
506 searcher.search(query,thcc);
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
507 return thcc.getTotalHits();
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
508 }
1459
b04b8fc5f4f4 GoodQueryParser
Franklin Schmidt <fschmidt@gmail.com>
parents: 1458
diff changeset
509 Sort sort = sortStr==null ? null : GoodQueryParser.parseSort(mfp,sortStr);
545
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
510 TopDocs td = sort==null ? searcher.search(query,n) : searcher.search(query,n,sort);
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
511 final ScoreDoc[] scoreDocs = td.scoreDocs;
1563
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1562
diff changeset
512 DocFn docFn = new DocFn(searcher,query);
545
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
513 for( int i=0; i<scoreDocs.length; i++ ) {
1342
60599adc27b8 add lucene search options
Franklin Schmidt <fschmidt@gmail.com>
parents: 1341
diff changeset
514 ScoreDoc scoreDoc = scoreDocs[i];
60599adc27b8 add lucene search options
Franklin Schmidt <fschmidt@gmail.com>
parents: 1341
diff changeset
515 docFn.docID = scoreDoc.doc;
1563
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1562
diff changeset
516 fn.call(luan,i+1,docFn,scoreDoc.score);
545
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
517 }
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
518 return td.totalHits;
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
519 } finally {
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
520 if( !inTransaction )
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
521 close(searcher);
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
522 }
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
523 }
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
524
1563
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1562
diff changeset
525 public Object search_in_transaction(Luan luan,LuanFunction fn) throws LuanException, IOException {
545
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
526 if( threadLocalSearcher.get() != null )
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 624
diff changeset
527 throw new LuanException("can't nest search_in_transaction calls");
545
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
528 IndexSearcher searcher = openSearcher();
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
529 threadLocalSearcher.set(searcher);
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
530 try {
1563
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1562
diff changeset
531 return fn.call(luan);
545
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
532 } finally {
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
533 threadLocalSearcher.set(null);
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
534 close(searcher);
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
535 }
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
536 }
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
537
ddcd4296107a clean up lucene search
Franklin Schmidt <fschmidt@gmail.com>
parents: 544
diff changeset
538
796
6b8ea0a9b7c9 remove LuanMeta
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
539 public FieldParser getIndexedFieldParser(String field) {
6b8ea0a9b7c9 remove LuanMeta
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
540 return mfp.fields.get(field);
6b8ea0a9b7c9 remove LuanMeta
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
541 }
544
c5a93767cc5c lucene overhaul, untested
Franklin Schmidt <fschmidt@gmail.com>
parents: 527
diff changeset
542
796
6b8ea0a9b7c9 remove LuanMeta
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
543 public void setIndexedFieldParser(String field,FieldParser fp) {
6b8ea0a9b7c9 remove LuanMeta
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
544 if( fp==null ) { // delete
6b8ea0a9b7c9 remove LuanMeta
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
545 mfp.fields.remove(field);
6b8ea0a9b7c9 remove LuanMeta
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
546 return;
6b8ea0a9b7c9 remove LuanMeta
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
547 }
6b8ea0a9b7c9 remove LuanMeta
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
548 mfp.fields.put( field, fp );
6b8ea0a9b7c9 remove LuanMeta
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
549 }
546
eaef1005ab87 general lucene cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 545
diff changeset
550
1528
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents: 1526
diff changeset
551 static Map<String,Object> toLucene(LuanTable table) throws LuanException {
1529
Franklin Schmidt <fschmidt@gmail.com>
parents: 1528
diff changeset
552 return SupplementingConfig.toLucene(table);
621
fd15da41afca allow list of values to be stored in lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 620
diff changeset
553 }
fd15da41afca allow list of values to be stored in lucene
Franklin Schmidt <fschmidt@gmail.com>
parents: 620
diff changeset
554
1562
b89212fd04b5 remove table.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1556
diff changeset
555 private static LuanTable toTable(Document doc) throws LuanException {
b89212fd04b5 remove table.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1556
diff changeset
556 return doc==null ? null : SupplementingConfig.toTable(LuceneUtils.toMap(doc));
312
d34be4588556 add lucene query parsing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 303
diff changeset
557 }
d34be4588556 add lucene query parsing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 303
diff changeset
558
624
8281a248c47e add lucene highlighter
Franklin Schmidt <fschmidt@gmail.com>
parents: 622
diff changeset
559
1248
475905984870 improve lucene highlighter and allow bbcode_to_text quoter to be nil
Franklin Schmidt <fschmidt@gmail.com>
parents: 1227
diff changeset
560 private static final Formatter nullFormatter = new Formatter() {
475905984870 improve lucene highlighter and allow bbcode_to_text quoter to be nil
Franklin Schmidt <fschmidt@gmail.com>
parents: 1227
diff changeset
561 public String highlightTerm(String originalText,TokenGroup tokenGroup) {
475905984870 improve lucene highlighter and allow bbcode_to_text quoter to be nil
Franklin Schmidt <fschmidt@gmail.com>
parents: 1227
diff changeset
562 return originalText;
475905984870 improve lucene highlighter and allow bbcode_to_text quoter to be nil
Franklin Schmidt <fschmidt@gmail.com>
parents: 1227
diff changeset
563 }
475905984870 improve lucene highlighter and allow bbcode_to_text quoter to be nil
Franklin Schmidt <fschmidt@gmail.com>
parents: 1227
diff changeset
564 };
475905984870 improve lucene highlighter and allow bbcode_to_text quoter to be nil
Franklin Schmidt <fschmidt@gmail.com>
parents: 1227
diff changeset
565
1563
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1562
diff changeset
566 public LuanFunction highlighter(final Luan luan,String queryStr,final LuanFunction formatter,final Integer fragmentSize,String dotdotdot)
1342
60599adc27b8 add lucene search options
Franklin Schmidt <fschmidt@gmail.com>
parents: 1341
diff changeset
567 throws ParseException
60599adc27b8 add lucene search options
Franklin Schmidt <fschmidt@gmail.com>
parents: 1341
diff changeset
568 {
1459
b04b8fc5f4f4 GoodQueryParser
Franklin Schmidt <fschmidt@gmail.com>
parents: 1458
diff changeset
569 Query query = GoodQueryParser.parseQuery(mfp,queryStr);
624
8281a248c47e add lucene highlighter
Franklin Schmidt <fschmidt@gmail.com>
parents: 622
diff changeset
570 Formatter fmt = new Formatter() {
8281a248c47e add lucene highlighter
Franklin Schmidt <fschmidt@gmail.com>
parents: 622
diff changeset
571 public String highlightTerm(String originalText,TokenGroup tokenGroup) {
1435
Franklin Schmidt <fschmidt@gmail.com>
parents: 1430
diff changeset
572 if( tokenGroup.getTotalScore() <= 0 )
624
8281a248c47e add lucene highlighter
Franklin Schmidt <fschmidt@gmail.com>
parents: 622
diff changeset
573 return originalText;
8281a248c47e add lucene highlighter
Franklin Schmidt <fschmidt@gmail.com>
parents: 622
diff changeset
574 try {
1563
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1562
diff changeset
575 return (String)Luan.first(formatter.call(luan,originalText));
624
8281a248c47e add lucene highlighter
Franklin Schmidt <fschmidt@gmail.com>
parents: 622
diff changeset
576 } catch(LuanException e) {
8281a248c47e add lucene highlighter
Franklin Schmidt <fschmidt@gmail.com>
parents: 622
diff changeset
577 throw new LuanRuntimeException(e);
8281a248c47e add lucene highlighter
Franklin Schmidt <fschmidt@gmail.com>
parents: 622
diff changeset
578 }
8281a248c47e add lucene highlighter
Franklin Schmidt <fschmidt@gmail.com>
parents: 622
diff changeset
579 }
8281a248c47e add lucene highlighter
Franklin Schmidt <fschmidt@gmail.com>
parents: 622
diff changeset
580 };
1248
475905984870 improve lucene highlighter and allow bbcode_to_text quoter to be nil
Franklin Schmidt <fschmidt@gmail.com>
parents: 1227
diff changeset
581 QueryScorer queryScorer = new QueryScorer(query);
475905984870 improve lucene highlighter and allow bbcode_to_text quoter to be nil
Franklin Schmidt <fschmidt@gmail.com>
parents: 1227
diff changeset
582 final Highlighter chooser = fragmentSize==null ? null : new Highlighter(nullFormatter,queryScorer);
475905984870 improve lucene highlighter and allow bbcode_to_text quoter to be nil
Franklin Schmidt <fschmidt@gmail.com>
parents: 1227
diff changeset
583 if( chooser != null )
475905984870 improve lucene highlighter and allow bbcode_to_text quoter to be nil
Franklin Schmidt <fschmidt@gmail.com>
parents: 1227
diff changeset
584 chooser.setTextFragmenter( new SimpleSpanFragmenter(queryScorer,fragmentSize) );
475905984870 improve lucene highlighter and allow bbcode_to_text quoter to be nil
Franklin Schmidt <fschmidt@gmail.com>
parents: 1227
diff changeset
585 final Highlighter hl = new Highlighter(fmt,queryScorer);
624
8281a248c47e add lucene highlighter
Franklin Schmidt <fschmidt@gmail.com>
parents: 622
diff changeset
586 hl.setTextFragmenter( new NullFragmenter() );
1563
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1562
diff changeset
587 return new LuanFunction() {
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1562
diff changeset
588 @Override public String call(Luan luan,Object[] args) throws LuanException {
624
8281a248c47e add lucene highlighter
Franklin Schmidt <fschmidt@gmail.com>
parents: 622
diff changeset
589 String text = (String)args[0];
8281a248c47e add lucene highlighter
Franklin Schmidt <fschmidt@gmail.com>
parents: 622
diff changeset
590 try {
1248
475905984870 improve lucene highlighter and allow bbcode_to_text quoter to be nil
Franklin Schmidt <fschmidt@gmail.com>
parents: 1227
diff changeset
591 if( chooser != null ) {
475905984870 improve lucene highlighter and allow bbcode_to_text quoter to be nil
Franklin Schmidt <fschmidt@gmail.com>
parents: 1227
diff changeset
592 String s = chooser.getBestFragment(analyzer,null,text);
475905984870 improve lucene highlighter and allow bbcode_to_text quoter to be nil
Franklin Schmidt <fschmidt@gmail.com>
parents: 1227
diff changeset
593 if( s != null ) {
475905984870 improve lucene highlighter and allow bbcode_to_text quoter to be nil
Franklin Schmidt <fschmidt@gmail.com>
parents: 1227
diff changeset
594 if( dotdotdot != null ) {
475905984870 improve lucene highlighter and allow bbcode_to_text quoter to be nil
Franklin Schmidt <fschmidt@gmail.com>
parents: 1227
diff changeset
595 boolean atStart = text.startsWith(s);
475905984870 improve lucene highlighter and allow bbcode_to_text quoter to be nil
Franklin Schmidt <fschmidt@gmail.com>
parents: 1227
diff changeset
596 boolean atEnd = text.endsWith(s);
475905984870 improve lucene highlighter and allow bbcode_to_text quoter to be nil
Franklin Schmidt <fschmidt@gmail.com>
parents: 1227
diff changeset
597 if( !atStart )
475905984870 improve lucene highlighter and allow bbcode_to_text quoter to be nil
Franklin Schmidt <fschmidt@gmail.com>
parents: 1227
diff changeset
598 s = dotdotdot + s;
475905984870 improve lucene highlighter and allow bbcode_to_text quoter to be nil
Franklin Schmidt <fschmidt@gmail.com>
parents: 1227
diff changeset
599 if( !atEnd )
475905984870 improve lucene highlighter and allow bbcode_to_text quoter to be nil
Franklin Schmidt <fschmidt@gmail.com>
parents: 1227
diff changeset
600 s = s + dotdotdot;
475905984870 improve lucene highlighter and allow bbcode_to_text quoter to be nil
Franklin Schmidt <fschmidt@gmail.com>
parents: 1227
diff changeset
601 }
475905984870 improve lucene highlighter and allow bbcode_to_text quoter to be nil
Franklin Schmidt <fschmidt@gmail.com>
parents: 1227
diff changeset
602 text = s;
475905984870 improve lucene highlighter and allow bbcode_to_text quoter to be nil
Franklin Schmidt <fschmidt@gmail.com>
parents: 1227
diff changeset
603 } else if( text.length() > fragmentSize ) {
475905984870 improve lucene highlighter and allow bbcode_to_text quoter to be nil
Franklin Schmidt <fschmidt@gmail.com>
parents: 1227
diff changeset
604 text = text.substring(0,fragmentSize);
475905984870 improve lucene highlighter and allow bbcode_to_text quoter to be nil
Franklin Schmidt <fschmidt@gmail.com>
parents: 1227
diff changeset
605 if( dotdotdot != null )
475905984870 improve lucene highlighter and allow bbcode_to_text quoter to be nil
Franklin Schmidt <fschmidt@gmail.com>
parents: 1227
diff changeset
606 text += "...";
475905984870 improve lucene highlighter and allow bbcode_to_text quoter to be nil
Franklin Schmidt <fschmidt@gmail.com>
parents: 1227
diff changeset
607 }
475905984870 improve lucene highlighter and allow bbcode_to_text quoter to be nil
Franklin Schmidt <fschmidt@gmail.com>
parents: 1227
diff changeset
608 }
624
8281a248c47e add lucene highlighter
Franklin Schmidt <fschmidt@gmail.com>
parents: 622
diff changeset
609 String s = hl.getBestFragment(analyzer,null,text);
8281a248c47e add lucene highlighter
Franklin Schmidt <fschmidt@gmail.com>
parents: 622
diff changeset
610 return s!=null ? s : text;
8281a248c47e add lucene highlighter
Franklin Schmidt <fschmidt@gmail.com>
parents: 622
diff changeset
611 } catch(LuanRuntimeException e) {
8281a248c47e add lucene highlighter
Franklin Schmidt <fschmidt@gmail.com>
parents: 622
diff changeset
612 throw (LuanException)e.getCause();
8281a248c47e add lucene highlighter
Franklin Schmidt <fschmidt@gmail.com>
parents: 622
diff changeset
613 } catch(IOException e) {
8281a248c47e add lucene highlighter
Franklin Schmidt <fschmidt@gmail.com>
parents: 622
diff changeset
614 throw new RuntimeException(e);
8281a248c47e add lucene highlighter
Franklin Schmidt <fschmidt@gmail.com>
parents: 622
diff changeset
615 } catch(InvalidTokenOffsetsException e) {
8281a248c47e add lucene highlighter
Franklin Schmidt <fschmidt@gmail.com>
parents: 622
diff changeset
616 throw new RuntimeException(e);
8281a248c47e add lucene highlighter
Franklin Schmidt <fschmidt@gmail.com>
parents: 622
diff changeset
617 }
8281a248c47e add lucene highlighter
Franklin Schmidt <fschmidt@gmail.com>
parents: 622
diff changeset
618 }
8281a248c47e add lucene highlighter
Franklin Schmidt <fschmidt@gmail.com>
parents: 622
diff changeset
619 };
8281a248c47e add lucene highlighter
Franklin Schmidt <fschmidt@gmail.com>
parents: 622
diff changeset
620 }
1341
a015a0b5c388 add Html.decode(), Lucene.count_tokens(), lucene boosts, Sql.database.set()
Franklin Schmidt <fschmidt@gmail.com>
parents: 1337
diff changeset
621
a015a0b5c388 add Html.decode(), Lucene.count_tokens(), lucene boosts, Sql.database.set()
Franklin Schmidt <fschmidt@gmail.com>
parents: 1337
diff changeset
622 public int count_tokens(String text)
a015a0b5c388 add Html.decode(), Lucene.count_tokens(), lucene boosts, Sql.database.set()
Franklin Schmidt <fschmidt@gmail.com>
parents: 1337
diff changeset
623 throws IOException
a015a0b5c388 add Html.decode(), Lucene.count_tokens(), lucene boosts, Sql.database.set()
Franklin Schmidt <fschmidt@gmail.com>
parents: 1337
diff changeset
624 {
a015a0b5c388 add Html.decode(), Lucene.count_tokens(), lucene boosts, Sql.database.set()
Franklin Schmidt <fschmidt@gmail.com>
parents: 1337
diff changeset
625 int n = 0;
a015a0b5c388 add Html.decode(), Lucene.count_tokens(), lucene boosts, Sql.database.set()
Franklin Schmidt <fschmidt@gmail.com>
parents: 1337
diff changeset
626 TokenStream ts = analyzer.tokenStream(null,text);
a015a0b5c388 add Html.decode(), Lucene.count_tokens(), lucene boosts, Sql.database.set()
Franklin Schmidt <fschmidt@gmail.com>
parents: 1337
diff changeset
627 ts.reset();
a015a0b5c388 add Html.decode(), Lucene.count_tokens(), lucene boosts, Sql.database.set()
Franklin Schmidt <fschmidt@gmail.com>
parents: 1337
diff changeset
628 while( ts.incrementToken() ) {
a015a0b5c388 add Html.decode(), Lucene.count_tokens(), lucene boosts, Sql.database.set()
Franklin Schmidt <fschmidt@gmail.com>
parents: 1337
diff changeset
629 n++;
a015a0b5c388 add Html.decode(), Lucene.count_tokens(), lucene boosts, Sql.database.set()
Franklin Schmidt <fschmidt@gmail.com>
parents: 1337
diff changeset
630 }
a015a0b5c388 add Html.decode(), Lucene.count_tokens(), lucene boosts, Sql.database.set()
Franklin Schmidt <fschmidt@gmail.com>
parents: 1337
diff changeset
631 ts.close();
a015a0b5c388 add Html.decode(), Lucene.count_tokens(), lucene boosts, Sql.database.set()
Franklin Schmidt <fschmidt@gmail.com>
parents: 1337
diff changeset
632 return n;
a015a0b5c388 add Html.decode(), Lucene.count_tokens(), lucene boosts, Sql.database.set()
Franklin Schmidt <fschmidt@gmail.com>
parents: 1337
diff changeset
633 }
a015a0b5c388 add Html.decode(), Lucene.count_tokens(), lucene boosts, Sql.database.set()
Franklin Schmidt <fschmidt@gmail.com>
parents: 1337
diff changeset
634
1387
bc40bc9aab3a start postgres backup
Franklin Schmidt <fschmidt@gmail.com>
parents: 1379
diff changeset
635
1528
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents: 1526
diff changeset
636 void restore(LuanTable doc)
1388
2024d23ddd64 add restore_from_postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1387
diff changeset
637 throws LuanException, IOException
2024d23ddd64 add restore_from_postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1387
diff changeset
638 {
1528
3bd4d7963456 use goodjava/lucene/api
Franklin Schmidt <fschmidt@gmail.com>
parents: 1526
diff changeset
639 writer.addDocument(toLucene(doc));
1388
2024d23ddd64 add restore_from_postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1387
diff changeset
640 }
2024d23ddd64 add restore_from_postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1387
diff changeset
641
1556
52241b69c339 lucene logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1553
diff changeset
642 public void relog()
52241b69c339 lucene logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1553
diff changeset
643 throws IOException, LuanException
52241b69c339 lucene logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1553
diff changeset
644 {
52241b69c339 lucene logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1553
diff changeset
645 logger.info("start relog");
52241b69c339 lucene logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1553
diff changeset
646 writeLock.lock();
52241b69c339 lucene logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1553
diff changeset
647 try {
52241b69c339 lucene logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1553
diff changeset
648 LoggingIndexWriter loggingWriter = (LoggingIndexWriter)writer;
52241b69c339 lucene logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1553
diff changeset
649 loggingWriter.logLucene();
52241b69c339 lucene logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1553
diff changeset
650 } finally {
52241b69c339 lucene logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1553
diff changeset
651 writeLock.unlock();
52241b69c339 lucene logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1553
diff changeset
652 }
52241b69c339 lucene logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1553
diff changeset
653 logger.info("end relog");
52241b69c339 lucene logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1553
diff changeset
654 }
52241b69c339 lucene logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1553
diff changeset
655
1563
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1562
diff changeset
656 public void restore_from_log(Luan luan,LuanFunction handler)
1696
2958cf04d844 remove postgres backup
Franklin Schmidt <fschmidt@gmail.com>
parents: 1690
diff changeset
657 throws IOException, LuanException, ParseException
1544
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
658 {
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
659 LoggingIndexWriter loggingWriter = (LoggingIndexWriter)writer;
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
660 if( wasCreated && !loggingWriter.wasCreated ) {
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
661 logger.error("restoring from log");
1563
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1562
diff changeset
662 force_restore_from_log(luan,handler);
1544
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
663 }
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
664 }
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
665
1563
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1562
diff changeset
666 public void force_restore_from_log(Luan luan,LuanFunction handler)
1544
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
667 throws IOException
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
668 {
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
669 logger.warn("start force_restore_from_log");
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
670 if( writeLock.isHeldByCurrentThread() )
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
671 throw new RuntimeException();
1563
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1562
diff changeset
672 OpDoer opDoer = handler==null ? null : new LuanOpDoer(writer,luan,handler);
1544
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
673 writeLock.lock();
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
674 boolean ok = false;
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
675 try {
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
676 LoggingIndexWriter loggingWriter = (LoggingIndexWriter)writer;
1551
9cc4cee39b8b add LuanOpDoer
Franklin Schmidt <fschmidt@gmail.com>
parents: 1548
diff changeset
677 loggingWriter.playLogs(opDoer);
1544
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
678 ok = true;
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
679 wrote();
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
680 ensure_open(); // refresh searcher
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
681 initId();
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
682 wasCreated = false;
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
683 } finally {
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
684 if( !ok ) {
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
685 writer.rollback();
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
686 reopen();
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
687 }
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
688 wrote();
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
689 writeLock.unlock();
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
690 }
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
691 logger.warn("end force_restore_from_log");
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
692 }
35601f15ecc3 add lucene log tag and restore_from_log
Franklin Schmidt <fschmidt@gmail.com>
parents: 1543
diff changeset
693
1696
2958cf04d844 remove postgres backup
Franklin Schmidt <fschmidt@gmail.com>
parents: 1690
diff changeset
694 public void check() throws IOException, LuanException, ParseException {
1406
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
695 String msg = "start check";
1454
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1453
diff changeset
696 logger.info(msg);
1391
94f48cc76de8 add lucene check
Franklin Schmidt <fschmidt@gmail.com>
parents: 1390
diff changeset
697 CheckIndex.Status status = new CheckIndex(fsDir).checkIndex();
94f48cc76de8 add lucene check
Franklin Schmidt <fschmidt@gmail.com>
parents: 1390
diff changeset
698 if( !status.clean )
1454
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1453
diff changeset
699 logger.error("index not clean");
1538
634f6765830e use goodjava/lucene/logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1535
diff changeset
700 if( writer instanceof LoggingIndexWriter ) {
634f6765830e use goodjava/lucene/logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1535
diff changeset
701 LoggingIndexWriter loggingWriter = (LoggingIndexWriter)writer;
634f6765830e use goodjava/lucene/logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1535
diff changeset
702 logger.info("log check");
634f6765830e use goodjava/lucene/logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1535
diff changeset
703 boolean ok = loggingWriter.check(ID_SORT);
634f6765830e use goodjava/lucene/logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1535
diff changeset
704 }
1454
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1453
diff changeset
705 logger.info("end check");
1391
94f48cc76de8 add lucene check
Franklin Schmidt <fschmidt@gmail.com>
parents: 1390
diff changeset
706 }
94f48cc76de8 add lucene check
Franklin Schmidt <fschmidt@gmail.com>
parents: 1390
diff changeset
707
1749
d1e7564a9ce5 improve query parser
Franklin Schmidt <fschmidt@gmail.com>
parents: 1696
diff changeset
708 public String explain_query(String queryStr) throws ParseException {
d1e7564a9ce5 improve query parser
Franklin Schmidt <fschmidt@gmail.com>
parents: 1696
diff changeset
709 return GoodQueryParser.parseQuery(mfp,queryStr).toString();
d1e7564a9ce5 improve query parser
Franklin Schmidt <fschmidt@gmail.com>
parents: 1696
diff changeset
710 }
d1e7564a9ce5 improve query parser
Franklin Schmidt <fschmidt@gmail.com>
parents: 1696
diff changeset
711
230
4438cb2e04d0 start lucene
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
712 }