comparison lucene/src/luan/modules/lucene/queryparser/SynonymParser.java @ 730:01e68da6983b

add sane-lucene-queryparser source to luan
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 10 Jun 2016 15:41:15 -0600
parents
children
comparison
equal deleted inserted replaced
729:4ce68aad92b7 730:01e68da6983b
1 package luan.modules.lucene.queryparser;
2
3 import java.util.Map;
4 import org.apache.lucene.search.Query;
5 import org.apache.lucene.search.BooleanQuery;
6 import org.apache.lucene.search.BooleanClause;
7 import org.apache.lucene.search.SortField;
8
9
10 public class SynonymParser implements FieldParser {
11 private final FieldParser fp;
12 private final Map<String,String[]> synonymMap;
13
14 public SynonymParser(FieldParser fp,Map<String,String[]> synonymMap) {
15 this.fp = fp;
16 this.synonymMap = synonymMap;
17 }
18
19 protected String[] getSynonyms(String query) {
20 return synonymMap.get(query);
21 }
22
23 public Query getQuery(SaneQueryParser qp,String field,String query) throws ParseException {
24 String[] synonyms = getSynonyms(query);
25 if( synonyms == null )
26 return fp.getQuery(qp,field,query);
27 BooleanQuery bq = new BooleanQuery();
28 bq.add( fp.getQuery(qp,field,query), BooleanClause.Occur.SHOULD );
29 for( String s : synonyms ) {
30 bq.add( fp.getQuery(qp,field,s), BooleanClause.Occur.SHOULD );
31 }
32 return bq;
33 }
34
35 public Query getRangeQuery(SaneQueryParser qp,String field,String minQuery,String maxQuery,boolean includeMin,boolean includeMax) throws ParseException {
36 return fp.getRangeQuery(qp,field,minQuery,maxQuery,includeMin,includeMax);
37 }
38
39 public SortField getSortField(SaneQueryParser qp,String field,boolean reverse) throws ParseException {
40 return fp.getSortField(qp,field,reverse);
41 }
42 }