Ignore:
Timestamp:
2018-09-25T10:56:42+12:00 (6 years ago)
Author:
kjdon
Message:

greenstone now uses lucene 4.7.2, so upgrading this code to match

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone3/web/sites/localsite/collect/gberg/java/Search.java

    r5956 r32485  
    22 * search.java
    33 *
    4  * Created on 25 February 2003, 02:25
    5  */
     4 * Simple command line program to search the lucene index.
     5 * Run like: java -classpath $CLASSPATH:<path-to-gberg>/java Search <index directory>
     6 * where the index directory is the index/idx folder.
     7 *
     8 * Copyright 2003 The New Zealand Digital Library Project
     9 *
     10 * A component of the Greenstone digital library software
     11 * from the New Zealand Digital Library Project at the
     12 * University of Waikato, New Zealand.
     13 *
     14 * This program is free software; you can redistribute it and/or modify
     15 * it under the terms of the GNU General Public License as published by
     16 * the Free Software Foundation; either version 2 of the License, or
     17 * (at your option) any later version.
     18 *
     19 * This program is distributed in the hope that it will be useful,
     20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
     21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     22 * GNU General Public License for more details.
     23 *
     24 * You should have received a copy of the GNU General Public License
     25 * along with this program; if not, write to the Free Software
     26 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
     27 *
     28 *********************************************************************/
    629
    7 
    8 /**
    9  *
    10  * @author  [email protected]
    11  * @version
    12  */
    1330
    1431import java.io.IOException;
    1532import java.io.BufferedReader;
    1633import java.io.InputStreamReader;
     34import java.io.File;
    1735
    18 import org.apache.lucene.analysis.Analyzer;
    19 import org.apache.lucene.analysis.standard.StandardAnalyzer;
     36//import org.apache.lucene.analysis.Analyzer;
     37//import org.apache.lucene.analysis.standard.StandardAnalyzer;
    2038import org.apache.lucene.document.Document;
    2139import org.apache.lucene.search.Searcher;
    2240import org.apache.lucene.search.IndexSearcher;
    2341import org.apache.lucene.search.Query;
    24 import org.apache.lucene.search.Hits;
     42//import org.apache.lucene.search.Hits;
     43import org.apache.lucene.search.TopDocs;
    2544import org.apache.lucene.queryParser.QueryParser;
    2645import org.apache.lucene.search.TermQuery;
    2746import org.apache.lucene.index.Term;
     47import org.apache.lucene.store.Directory;
     48import org.apache.lucene.store.FSDirectory;
     49import org.apache.lucene.index.DirectoryReader;
     50import org.apache.lucene.index.IndexReader;
     51import org.apache.lucene.util.Version;
    2852
    2953public class Search  {
     
    3660    }
    3761        try {
    38         Searcher searcher = new IndexSearcher(args[0]);
    39         Analyzer analyzer = new StandardAnalyzer();
    4062
    41         BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    42         while (true) {
    43         System.out.print("Query: ");
    44         String line = in.readLine();
     63      Directory indexdir_dir = FSDirectory.open(new File(args[0]));
     64      IndexReader reader = DirectoryReader.open(indexdir_dir);
     65      IndexSearcher searcher = new IndexSearcher(reader);
     66
     67      BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
     68      System.out.println("Type .q to quit");
     69      while (true) {
     70        System.out.print("Query: ");
     71        String line = in.readLine();
     72        line.trim();
     73        if (line.equals(".q"))
     74          break;
    4575       
    46         if (line.length() == -1)
    47             break;
     76        Term term = new Term("content",line);
    4877       
    49         Term term = new Term("content",line);
     78        Query query = new TermQuery(term);
     79        System.out.println("Searching for: " + query.toString("content"));
     80        final int HITS_PER_PAGE=10;
    5081       
    51         Query query = new TermQuery(term);
    52         System.out.println("Searching for: " + query.toString("content"));
     82        TopDocs hits = searcher.search(query, Integer.MAX_VALUE);
     83        System.out.println(hits.totalHits + " total matching documents");
     84        for (int start = 0; start < hits.totalHits; start += HITS_PER_PAGE) {
     85         
     86          int end = Math.min(hits.totalHits, start + HITS_PER_PAGE);
     87          for (int i = start; i < end; i++) {
     88        int docnum = hits.scoreDocs[i].doc;
     89        Document doc = reader.document(docnum);
     90        String node_id = doc.get("nodeID");
     91        System.out.println(i + ". ID: "+node_id);
     92          }
     93          if (hits.totalHits > end) {
     94        System.out.print("more (y/n) ? ");
     95        line = in.readLine();
     96        if (line.length() == 0 || line.charAt(0) == 'n')
     97          break;
     98          }
     99        }
    53100       
    54         Hits hits = searcher.search(query);
    55         System.out.println(hits.length() + " total matching documents");
    56        
    57         final int HITS_PER_PAGE=10;
    58        
    59         for (int start = 0; start < hits.length(); start += HITS_PER_PAGE) {
    60             int end = Math.min(hits.length(), start + HITS_PER_PAGE);
    61             for (int i = start; i < end; i++) {
    62             Document doc = hits.doc(i);
    63             String node_id= doc.get("nodeID");
    64             System.out.println(i + ". ID: "+node_id);
    65             }
    66            
    67             if (hits.length() > end) {
    68             System.out.print("more (y/n) ? ");
    69             line = in.readLine();
    70             if (line.length() == 0 || line.charAt(0) == 'n')
    71                 break;
    72             }
    73         }
    74        
    75         }
     101      }
    76102       
    77         searcher.close();
     103      reader.close();
    78104    }
    79105    catch (Exception e) {
    80         System.out.println(" caught a " + e.getClass() +
    81                    "\n with message: " + e.getMessage());
     106      System.out.println(" caught a " + e.getClass() +
     107                 "\n with message: " + e.getMessage());
    82108        }
    83109    }
Note: See TracChangeset for help on using the changeset viewer.