comparison src/luan/modules/lucene/queryparser/MultiFieldParser.java @ 1110:38a42f437fd2

queryparser now uses parsers.Parser
author Franklin Schmidt <fschmidt@gmail.com>
date Wed, 02 Aug 2017 13:45:06 -0600
parents 1a68fc55a80c
children 88b5b81cad4a
comparison
equal deleted inserted replaced
1109:8c999ab85e33 1110:38a42f437fd2
4 import java.util.HashMap; 4 import java.util.HashMap;
5 import org.apache.lucene.search.Query; 5 import org.apache.lucene.search.Query;
6 import org.apache.lucene.search.BooleanQuery; 6 import org.apache.lucene.search.BooleanQuery;
7 import org.apache.lucene.search.BooleanClause; 7 import org.apache.lucene.search.BooleanClause;
8 import org.apache.lucene.search.SortField; 8 import org.apache.lucene.search.SortField;
9 import luan.modules.parsers.ParseException;
9 10
10 11
11 public class MultiFieldParser implements FieldParser { 12 public class MultiFieldParser implements FieldParser {
12 13
13 /** 14 /**
32 } 33 }
33 34
34 @Override public Query getQuery(SaneQueryParser qp,String field,String query) throws ParseException { 35 @Override public Query getQuery(SaneQueryParser qp,String field,String query) throws ParseException {
35 if( field == null ) { 36 if( field == null ) {
36 if( defaultFieldParser == null ) 37 if( defaultFieldParser == null )
37 throw new ParseException(qp,"no defaults were specified, so a field is required"); 38 throw qp.exception("no defaults were specified, so a field is required");
38 if( defaultFields.length == 1 ) 39 if( defaultFields.length == 1 )
39 return defaultFieldParser.getQuery(qp,defaultFields[0],query); 40 return defaultFieldParser.getQuery(qp,defaultFields[0],query);
40 BooleanQuery bq = new BooleanQuery(); 41 BooleanQuery bq = new BooleanQuery();
41 for( String f : defaultFields ) { 42 for( String f : defaultFields ) {
42 bq.add( defaultFieldParser.getQuery(qp,f,query), BooleanClause.Occur.SHOULD ); 43 bq.add( defaultFieldParser.getQuery(qp,f,query), BooleanClause.Occur.SHOULD );
46 FieldParser fp = fields.get(field); 47 FieldParser fp = fields.get(field);
47 if( fp != null ) 48 if( fp != null )
48 return fp.getQuery(qp,field,query); 49 return fp.getQuery(qp,field,query);
49 if( allowUnspecifiedFields ) 50 if( allowUnspecifiedFields )
50 return defaultFieldParser.getQuery(qp,field,query); 51 return defaultFieldParser.getQuery(qp,field,query);
51 throw new ParseException(qp,"unrecognized field '"+field+"'"); 52 throw qp.exception("unrecognized field '"+field+"'");
52 } 53 }
53 } 54 }
54 55
55 @Override public Query getRangeQuery(SaneQueryParser qp,String field,String minQuery,String maxQuery,boolean includeMin,boolean includeMax) throws ParseException { 56 @Override public Query getRangeQuery(SaneQueryParser qp,String field,String minQuery,String maxQuery,boolean includeMin,boolean includeMax) throws ParseException {
56 if( field == null ) { 57 if( field == null ) {
57 if( defaultFieldParser == null ) 58 if( defaultFieldParser == null )
58 throw new ParseException(qp,"no defaults were specified, so a field is required"); 59 throw qp.exception("no defaults were specified, so a field is required");
59 if( defaultFields.length == 1 ) 60 if( defaultFields.length == 1 )
60 return defaultFieldParser.getRangeQuery(qp,defaultFields[0],minQuery,maxQuery,includeMin,includeMax); 61 return defaultFieldParser.getRangeQuery(qp,defaultFields[0],minQuery,maxQuery,includeMin,includeMax);
61 BooleanQuery bq = new BooleanQuery(); 62 BooleanQuery bq = new BooleanQuery();
62 for( String f : defaultFields ) { 63 for( String f : defaultFields ) {
63 bq.add( defaultFieldParser.getRangeQuery(qp,f,minQuery,maxQuery,includeMin,includeMax), BooleanClause.Occur.SHOULD ); 64 bq.add( defaultFieldParser.getRangeQuery(qp,f,minQuery,maxQuery,includeMin,includeMax), BooleanClause.Occur.SHOULD );
67 FieldParser fp = fields.get(field); 68 FieldParser fp = fields.get(field);
68 if( fp != null ) 69 if( fp != null )
69 return fp.getRangeQuery(qp,field,minQuery,maxQuery,includeMin,includeMax); 70 return fp.getRangeQuery(qp,field,minQuery,maxQuery,includeMin,includeMax);
70 if( allowUnspecifiedFields ) 71 if( allowUnspecifiedFields )
71 return defaultFieldParser.getRangeQuery(qp,field,minQuery,maxQuery,includeMin,includeMax); 72 return defaultFieldParser.getRangeQuery(qp,field,minQuery,maxQuery,includeMin,includeMax);
72 throw new ParseException(qp,"field '"+field+"' not specified"); 73 throw qp.exception("field '"+field+"' not specified");
73 } 74 }
74 } 75 }
75 76
76 @Override public SortField getSortField(SaneQueryParser qp,String field,boolean reverse) throws ParseException { 77 @Override public SortField getSortField(SaneQueryParser qp,String field,boolean reverse) throws ParseException {
77 FieldParser fp = fields.get(field); 78 FieldParser fp = fields.get(field);
78 if( fp != null ) 79 if( fp != null )
79 return fp.getSortField(qp,field,reverse); 80 return fp.getSortField(qp,field,reverse);
80 if( allowUnspecifiedFields ) 81 if( allowUnspecifiedFields )
81 return defaultFieldParser.getSortField(qp,field,reverse); 82 return defaultFieldParser.getSortField(qp,field,reverse);
82 throw new ParseException(qp,"field '"+field+"' not specified"); 83 throw qp.exception("field '"+field+"' not specified");
83 } 84 }
84 85
85 } 86 }