TrecSearchThriftClient client = new TrecSearchThriftClient(params.getParamValue(HOST_OPTION),
Integer.parseInt(params.getParamValue(PORT_OPTION)), group, token);
Iterator<GQuery> queryIterator = queries.iterator();
while(queryIterator.hasNext()) {
GQuery query = queryIterator.next();
System.err.println(query.getTitle());
String queryText = query.getText();
// stupid hack. need to lowercase the query vector
FeatureVector temp = new FeatureVector(null);
Iterator<String> qTerms = query.getFeatureVector().iterator();
while(qTerms.hasNext()) {
String term = qTerms.next();
temp.addTerm(term.toLowerCase(), query.getFeatureVector().getFeaturetWeight(term));
}
temp.normalizeToOne();
query.setFeatureVector(temp);
// if we're doing feedback
if(fbDocs > 0 && fbTerms > 0) {
List<TResult> results = client.search(queryText, query.getQuerytweettime(), fbDocs);
FeedbackRelevanceModel fb = new FeedbackRelevanceModel();
fb.setOriginalQuery(query);
fb.setRes(results);
fb.build(stopper);
FeatureVector fbVector = fb.asFeatureVector();
fbVector.pruneToSize(fbTerms);
fbVector.normalizeToOne();
fbVector = FeatureVector.interpolate(query.getFeatureVector(), fbVector, ORIG_QUERY_WEIGHT);
System.err.println(fbVector);
StringBuilder builder = new StringBuilder();
Iterator<String> terms = fbVector.iterator();
while(terms.hasNext()) {
String term = terms.next();
if(term.length() < 2)
continue;
double prob = fbVector.getFeaturetWeight(term);
builder.append(term + "^" + prob + " ");
}
queryText = builder.toString().trim();
}
List<TResult> results = client.search(queryText, query.getQuerytweettime(), numResults);
String runTag = params.getParamValue(RUNTAG_OPTION);
if(runTag==null)
runTag = DEFAULT_RUNTAG;
int i = 1;
Iterator<TResult> hitIterator = results.iterator();
while(hitIterator.hasNext()) {
TResult hit = hitIterator.next();
out.println(String.format("%s Q0 %s %d %f %s", query.getTitle(), hit.getId(), i,
hit.getRsv(), runTag));
if(i++ >= numResults)
break;
}