Coverage Report - org.galagosearch.core.tools.BatchSearch
 
Classes in this File Line Coverage Branch Coverage Complexity
BatchSearch
0%
0/27
0%
0/10
0
 
 1  
 // BSD License (http://www.galagosearch.org/license)
 2  
 package org.galagosearch.core.tools;
 3  
 
 4  
 import org.galagosearch.core.retrieval.*;
 5  
 import java.util.List;
 6  
 import org.galagosearch.core.retrieval.query.Node;
 7  
 import org.galagosearch.core.retrieval.query.SimpleQuery;
 8  
 import org.galagosearch.core.retrieval.query.StructuredQuery;
 9  
 import org.galagosearch.tupleflow.Parameters;
 10  
 
 11  
 /**
 12  
  *
 13  
  * @author trevor
 14  
  */
 15  0
 public class BatchSearch {
 16  
     public static Parameters.Value getSmoothing(Parameters parameters) {
 17  0
         if (parameters.containsKey("smoothing")) {
 18  0
             return parameters.list("smoothing").get(0);
 19  
         }
 20  
 
 21  0
         return null;
 22  
     }
 23  
 
 24  
     public static Node parseQuery(String query, Parameters parameters) {
 25  0
         String queryType = parameters.get("queryType", "complex");
 26  
 
 27  0
         if (queryType.equals("simple")) {
 28  0
             return SimpleQuery.parseTree(query);
 29  
         }
 30  
 
 31  0
         return StructuredQuery.parse(query);
 32  
     }
 33  
 
 34  
     public static String formatScore(double score) {
 35  0
         double difference = Math.abs(score - (int) score);
 36  
 
 37  0
         if (difference < 0.00001) {
 38  0
             return Integer.toString((int) score);
 39  
         }
 40  0
         return String.format("%10.8f", score);
 41  
     }
 42  
 
 43  
     public static void main(String[] args) throws Exception {
 44  
         // read in parameters
 45  0
         Parameters parameters = new Parameters(args);
 46  0
         List<Parameters.Value> queries = parameters.list("query");
 47  
 
 48  
         // open index
 49  
         // BUGBUG: need to make this generalized
 50  0
         Retrieval retrieval = Retrieval.instance(parameters.get("index"));
 51  
 
 52  
         // record results requested
 53  0
         int requested = (int) parameters.get("count", 1000);
 54  
 
 55  
         // for each query, run it, get the results, look up the docnos, print in TREC format
 56  0
         for (Parameters.Value query : queries) {
 57  
             // parse the query
 58  0
             String queryText = query.get("text");
 59  0
             Node queryRoot = parseQuery(queryText, parameters);
 60  
 
 61  0
             ScoredDocument[] results = retrieval.runQuery(queryRoot, requested);
 62  
 
 63  0
             for (int i = 0; i < results.length; i++) {
 64  0
                 String document = retrieval.getDocumentName(results[i].document);
 65  0
                 double score = results[i].score;
 66  0
                 int rank = i + 1;
 67  
 
 68  0
                 System.out.format("%s Q0 %s %d %s galago\n", query.get("number"), document, rank,
 69  
                                   formatScore(score));
 70  
             }
 71  0
         }
 72  0
     }
 73  
 }