Exemple #1
0
  public static HashMap<String, Object> getResults(
      Set<String> sourceFileNames, String analyzer, String query) {
    HashMap<String, SqQuery> queries = getQuery(sourceFileNames, analyzer);
    Search searcher = new Search();
    List<ResultType> results = searcher.combinedResults(queries);

    SqQuery gQuery = queries.get("GOOGLE");
    List<TermType> soapTerms = new ArrayList<TermType>();
    QueryType soapQuery = new QueryType();
    List<SqTerm> termList = gQuery.getTermList();
    int minScore = 0, maxScore = 0;
    for (Iterator iterator = termList.iterator(); iterator.hasNext(); ) {
      SqTerm sqTerm = (SqTerm) iterator.next();
      int curScore = sqTerm.getScore();
      if (curScore > maxScore) {
        maxScore = curScore;
      }
      if (curScore < minScore) {
        minScore = curScore;
      }
    }

    // Calculate scaling factor
    int factor = (maxScore - minScore) / 10;

    for (Iterator iterator = termList.iterator(); iterator.hasNext(); ) {
      SqTerm sqTerm = (SqTerm) iterator.next();
      TermType tt = new TermType();
      tt.setWord(sqTerm.getText());
      tt.setWeight(((sqTerm.getScore() - minScore) / factor) + "");
      soapTerms.add(tt);
    }
    soapQuery.setTerm(soapTerms.toArray(new TermType[0]));

    HashMap<String, Object> hm = new HashMap<String, Object>();
    hm.put("Query", soapQuery);
    hm.put("Result", results);
    hm.put("Status", searcher.status);
    return hm;
  }