A query processing model is an interface that allows the execution of a query. In general, the input is a fully transformed, fully annotated query node, and the query parameter object. It also has a reference to a local retrieval, because it is instantiated locally.
Retrieval retrieval = RetrievalFactory.instance(.../*something clever here*/);
Parameters queryParameters = new Parameters();
queryParameters.set("processingModel", MyProcessingModel.class.getCanonicalName());
// use StructuredQuery to parse galago/indri style queries.
Node parsedQuery = StructuredQuery.parse("Who let the dogs out?");
// transform the query using all the traversals, one of which annotates statistics into the dirichlet nodes...
Node finalQuery = retrieval.transformQuery(parsedQuery, queryParameters);
// run the query, your processing model will be invoked
List<ScoredDocument> docs = retrieval.executeQuery(finalQuery, queryParameters).scoredDocuments;
The built-in ones can be found in this package, in general, but there seems to be a convention of naming them *Model
org.lemurproject.galago.core.retrieval.processing.*
RankedDocumentModel
, document at a time processingWorkingSetPassageModel
, scores passages from a "working" set of documentsAll of them extend the abstract class ProcessingModel
, which is a simple interface.