source: trunk/indexers/lucene-gs/src/org/greenstone/LuceneWrapper/GS2LuceneQuery.java@ 12257

Last change on this file since 12257 was 12257, checked in by mdewsnip, 18 years ago

Added package definitions.

  • Property svn:keywords set to Author Date Id Revision
File size: 2.5 KB
Line 
1/**
2 *
3 * @author [email protected]
4 * @author [email protected]
5 * @version
6 */
7
8package org.nzdl.gsdl.LuceneWrap;
9
10
11import java.io.BufferedReader;
12import java.io.InputStreamReader;
13import java.util.HashSet;
14import java.util.Iterator;
15
16import org.apache.lucene.analysis.Analyzer;
17import org.apache.lucene.analysis.standard.StandardAnalyzer;
18import org.apache.lucene.document.Document;
19import org.apache.lucene.index.IndexReader;
20import org.apache.lucene.index.Term;
21import org.apache.lucene.queryParser.QueryParser;
22import org.apache.lucene.search.Hits;
23import org.apache.lucene.search.IndexSearcher;
24import org.apache.lucene.search.Query;
25import org.apache.lucene.search.Searcher;
26
27
28public class GS2LuceneQuery
29{
30 public static void main (String args[])
31 {
32 if (args.length == 0) {
33 System.out.println("Usage: GS2LuceneQuery <index directory>");
34 return;
35 }
36
37 try {
38 Searcher searcher = new IndexSearcher(args[0]);
39 Analyzer analyzer = new StandardAnalyzer();
40 IndexReader reader = ((IndexSearcher) searcher).getIndexReader();
41
42 BufferedReader in = new BufferedReader(new InputStreamReader(System.in, "UTF-8"));
43 while (true) {
44 // Read the query from STDIN
45 String query_string = in.readLine();
46 if (query_string == null || query_string.length() == -1) {
47 break;
48 }
49 System.err.println("**** query = " + query_string);
50
51 // Parse the query and rewrite it into individual terms (eg. for wildcard searches)
52 QueryParser query_parser = new QueryParser("TX", analyzer);
53 Query query = query_parser.parse(query_string);
54 query = query.rewrite(reader);
55
56 // Perform the query
57 Hits hits = searcher.search(query);
58 System.out.println("<ResultSet>");
59 System.out.println(" <QueryString>" + query.toString("TX")+"</QueryString>");
60
61 // Return the list of expanded query terms and their frequencies
62 HashSet terms = new HashSet();
63 query.extractTerms(terms);
64 Iterator iter = terms.iterator();
65 while (iter.hasNext()) {
66 Term term = (Term) iter.next();
67 System.out.println(" <Term freq=\"" + reader.docFreq(term) + "\">" + term.text() + "</Term>");
68 }
69
70 // Return the matching documents
71 System.out.println(" <MatchingDocsInfo num=\"" + hits.length() + "\"/>");
72 for (int i = 0; i < hits.length(); i++) {
73 Document doc = hits.doc(i);
74 String node_id = doc.get("nodeID");
75 System.out.println(" <Match id=\"" + node_id + "\"/>");
76 }
77
78 System.out.println("</ResultSet>");
79 }
80
81 searcher.close();
82 }
83 catch (Exception exception) {
84 exception.printStackTrace();
85 }
86 }
87}
Note: See TracBrowser for help on using the repository browser.