Changeset 12408 for trunk/indexers/lucene-gs
- Timestamp:
- 2006-08-07T15:24:47+12:00 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/indexers/lucene-gs/src/org/greenstone/LuceneWrapper/GS2LuceneQuery.java
r12390 r12408 24 24 import org.apache.lucene.index.TermFreqVector; 25 25 import org.apache.lucene.queryParser.QueryParser; 26 import org.apache.lucene.search.Filter; 26 27 import org.apache.lucene.search.Hit; 27 28 import org.apache.lucene.search.Hits; 28 29 import org.apache.lucene.search.IndexSearcher; 29 30 import org.apache.lucene.search.Query; 31 import org.apache.lucene.search.RangeFilter; 30 32 import org.apache.lucene.search.Searcher; 31 33 import org.apache.lucene.search.Sort; … … 46 48 47 49 Sort sorter = new Sort(); 50 Filter filter = null; 48 51 boolean fuzzy = false; 49 52 … … 58 61 ///ystem.err.println("**** sort by = " + args[i]); 59 62 sorter = new Sort(args[i]); 63 } 64 if (args[i].equals("-filter")) 65 { 66 i++; 67 filter = parseFilterString(args[i]); 60 68 } 61 69 if (args[i].equals("-dco")) … … 211 219 212 220 // Perform the query 213 Hits hits = searcher.search(query, sorter); 221 Hits hits; 222 if (filter != null) { 223 hits = searcher.search(query, filter, sorter); 224 } 225 else { 226 hits = searcher.search(query, sorter); 227 } 214 228 System.out.println("<ResultSet>"); 215 229 System.out.println(" <QueryString>" + query_string + "</QueryString>"); … … 244 258 // TX field 245 259 TermFreqVector term_freq_vector = reader.getTermFreqVector(hit.getId(), "TX"); 246 if (term_freq_vector .size() > 0)260 if (term_freq_vector != null && term_freq_vector.size() > 0) 247 261 { 248 262 int[] term_frequencies = term_freq_vector.getTermFrequencies(); … … 316 330 } 317 331 } 332 333 334 private static Filter parseFilterString(String filter_string) 335 { 336 // Range filters 337 if (filter_string.matches("(.*):[\\{\\[](.+) TO (.+)[\\}\\]]")) { 338 String field_name = filter_string.substring(0, filter_string.indexOf(":")); 339 boolean include_lower = (filter_string.charAt(filter_string.indexOf(":") + 1) == '['); 340 String lower_term = filter_string.substring(filter_string.indexOf(":") + 2, filter_string.indexOf(" TO ")); 341 String upper_term = filter_string.substring(filter_string.indexOf(" TO ") + " TO ".length(), filter_string.length() - 1); 342 boolean include_upper = (filter_string.charAt(filter_string.length() - 1) == ']'); 343 return new RangeFilter(field_name, lower_term, upper_term, include_lower, include_upper); 344 } 345 346 System.err.println("Error: Could not understand filter string \"" + filter_string + "\""); 347 return null; 348 } 318 349 }
Note:
See TracChangeset
for help on using the changeset viewer.