Mercurial Hosting > luan
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 } |