Mercurial Hosting > luan
comparison lucene/src/luan/modules/lucene/LuceneIndex.java @ 620:89eb02f9827f
add Lucene all_search_terms_must_match()
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 04 Jan 2016 17:27:36 -0700 |
parents | 5e495e4e560b |
children | fd15da41afca |
comparison
equal
deleted
inserted
replaced
619:cc3a68033179 | 620:89eb02f9827f |
---|---|
47 import org.apache.lucene.search.IndexSearcher; | 47 import org.apache.lucene.search.IndexSearcher; |
48 import org.apache.lucene.search.TotalHitCountCollector; | 48 import org.apache.lucene.search.TotalHitCountCollector; |
49 import org.apache.lucene.search.ScoreDoc; | 49 import org.apache.lucene.search.ScoreDoc; |
50 import org.apache.lucene.search.Collector; | 50 import org.apache.lucene.search.Collector; |
51 import org.apache.lucene.search.Scorer; | 51 import org.apache.lucene.search.Scorer; |
52 import org.apache.lucene.search.BooleanClause; | |
52 import sane.lucene.queryparser.SaneQueryParser; | 53 import sane.lucene.queryparser.SaneQueryParser; |
53 import sane.lucene.queryparser.FieldParser; | 54 import sane.lucene.queryparser.FieldParser; |
54 import sane.lucene.queryparser.MultiFieldParser; | 55 import sane.lucene.queryparser.MultiFieldParser; |
55 import sane.lucene.queryparser.StringFieldParser; | 56 import sane.lucene.queryparser.StringFieldParser; |
56 import sane.lucene.queryparser.NumberFieldParser; | 57 import sane.lucene.queryparser.NumberFieldParser; |
82 private IndexSearcher searcher; | 83 private IndexSearcher searcher; |
83 private final ThreadLocal<IndexSearcher> threadLocalSearcher = new ThreadLocal<IndexSearcher>(); | 84 private final ThreadLocal<IndexSearcher> threadLocalSearcher = new ThreadLocal<IndexSearcher>(); |
84 private boolean isClosed = false; | 85 private boolean isClosed = false; |
85 private final MultiFieldParser mfp; | 86 private final MultiFieldParser mfp; |
86 public final LuanTable indexed_only_fields = new LuanTable(); | 87 public final LuanTable indexed_only_fields = new LuanTable(); |
88 public BooleanClause.Occur defaultOccur = BooleanClause.Occur.SHOULD; | |
87 | 89 |
88 public LuceneIndex(LuanState luan,String indexDirStr,FieldParser defaultFieldParser,String[] defaultFields) throws LuanException, IOException { | 90 public LuceneIndex(LuanState luan,String indexDirStr,FieldParser defaultFieldParser,String[] defaultFields) throws LuanException, IOException { |
89 mfp = defaultFieldParser==null ? new MultiFieldParser() : new MultiFieldParser(defaultFieldParser,defaultFields); | 91 mfp = defaultFieldParser==null ? new MultiFieldParser() : new MultiFieldParser(defaultFieldParser,defaultFields); |
90 mfp.fields.put( "type", STRING_FIELD_PARSER ); | 92 mfp.fields.put( "type", STRING_FIELD_PARSER ); |
91 mfp.fields.put( "id", NumberFieldParser.LONG ); | 93 mfp.fields.put( "id", NumberFieldParser.LONG ); |
128 NumericUtils.longToPrefixCoded(value,0,br); | 130 NumericUtils.longToPrefixCoded(value,0,br); |
129 return new Term(key,br); | 131 return new Term(key,br); |
130 } | 132 } |
131 | 133 |
132 public void delete(LuanState luan,String queryStr) throws LuanException, IOException, ParseException { | 134 public void delete(LuanState luan,String queryStr) throws LuanException, IOException, ParseException { |
133 Query query = SaneQueryParser.parseQuery(mfp,queryStr); | 135 Query query = SaneQueryParser.parseQuery(mfp,queryStr,defaultOccur); |
134 | 136 |
135 boolean commit = !writeLock.isHeldByCurrentThread(); | 137 boolean commit = !writeLock.isHeldByCurrentThread(); |
136 writeLock.lock(); | 138 writeLock.lock(); |
137 try { | 139 try { |
138 writer.deleteDocuments(query); | 140 writer.deleteDocuments(query); |
342 close(openSearcher()); | 344 close(openSearcher()); |
343 } | 345 } |
344 | 346 |
345 public int advanced_search( final LuanState luan, String queryStr, LuanFunction fn, Integer n, String sortStr ) throws LuanException, IOException, ParseException { | 347 public int advanced_search( final LuanState luan, String queryStr, LuanFunction fn, Integer n, String sortStr ) throws LuanException, IOException, ParseException { |
346 Utils.checkNotNull(luan,queryStr); | 348 Utils.checkNotNull(luan,queryStr); |
347 Query query = SaneQueryParser.parseQuery(mfp,queryStr); | 349 Query query = SaneQueryParser.parseQuery(mfp,queryStr,defaultOccur); |
348 IndexSearcher searcher = threadLocalSearcher.get(); | 350 IndexSearcher searcher = threadLocalSearcher.get(); |
349 boolean inTransaction = searcher != null; | 351 boolean inTransaction = searcher != null; |
350 if( !inTransaction ) | 352 if( !inTransaction ) |
351 searcher = openSearcher(); | 353 searcher = openSearcher(); |
352 try { | 354 try { |