Changeset 12408
- Timestamp:
- 2006-08-07T15:24:47+12:00 (18 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gsdl/bin/script/lucene_query.pl
r12373 r12408 45 45 my $full_indexdir = shift(@_); 46 46 my $fuzzy = shift(@_); 47 my $filter_string = shift(@_); 47 48 my $sort_field = shift(@_); 48 49 my $dco = shift(@_); … … 55 56 if (defined($fuzzy)) { 56 57 $cmd .= " -fuzzy"; 58 } 59 if (defined($filter_string)) { 60 $cmd .= " -filter \"" . $filter_string . "\""; 57 61 } 58 62 if (defined($sort_field)) { … … 82 86 my $argc = scalar(@argv); 83 87 if ($argc == 0) { 84 print STDERR "Usage: $PROGNAME full-index-dir [query] [-fuzzy] [- sort sort_field] [-dco AND|OR] [-out out_file]\n";88 print STDERR "Usage: $PROGNAME full-index-dir [query] [-fuzzy] [-filter filter_string] [-sort sort_field] [-dco AND|OR] [-out out_file]\n"; 85 89 exit 1; 86 90 } … … 89 93 my $query = undef; 90 94 my $fuzzy = undef; 95 my $filter_string = undef; 91 96 my $sort_field = undef; 92 97 my $dco = undef; … … 96 101 if ($argv[$i] eq "-fuzzy") { 97 102 $fuzzy = 1; 103 } 104 elsif ($argv[$i] eq "-filter") { 105 $i++; 106 $filter_string = $argv[$i]; 98 107 } 99 108 elsif ($argv[$i] eq "-sort") { … … 114 123 } 115 124 116 open_java_lucene($full_indexdir, $fuzzy, $ sort_field, $dco, $out_file);125 open_java_lucene($full_indexdir, $fuzzy, $filter_string, $sort_field, $dco, $out_file); 117 126 118 127 if (defined $query) { -
trunk/gsdl/src/java/org/nzdl/gsdl/LuceneWrap/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 } -
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.