q.query = new com.k_int.IR.QueryModels.RPNTree(rn);
// Process the query
LOGGER.finer("Create Search Task with query:" + q);
SearchTask st = search_service.createTask(q,
search_request.referenceId);
// Evaluate the query, waiting 10 seconds for the task to complete.
//We really want to be
// able to pass in a predicate to wait for here,
//e.g. evaluate(10000, "NumHits > 100 OR Status=Complete");
LOGGER.finer("Evaluate Search Task");
try {
st.evaluate(10000);
} catch (TimeoutExceededException tee) {
LOGGER.finer(
"Timeout exceeded waiting for search to complete");
}
if (search_request.resultSetName != null) {
LOGGER.finer("putting st with name "
+ search_request.resultSetName);
active_searches.put(search_request.resultSetName, st);
}
active_searches.put("Default", st);
// Result records processing
int result_count = st.getTaskResultSet().getFragmentCount();
LOGGER.finer("result count is " + result_count);
// Number of hits
response.resultCount = BigInteger.valueOf(result_count);
// Figure out Search Status
if ((st.getTaskStatusCode() != SearchTask.TASK_FAILURE)) {
response.searchStatus = Boolean.TRUE;
} else {
// Figure out Result Set Status
switch (st.getTaskStatusCode()) {
//case SearchTask.TASK_EXECUTING_ASYNC:
case SearchTask.TASK_EXECUTING:
// resultSetStatus = 2 (interim) Partial results available,
//not necessarily valid