About the Query Pipeline Routing Algorithm
About the Query Pipeline Routing Algorithm
When a query is sent to the Search API, a simple routing algorithm is executed to determine which query pipeline in the target Coveo organization will process this query.
The following diagram illustrates the process of a query being routed to a query pipeline.
1: The Last pipeline in organization refers to the pipeline whose position
attribute is the highest of all the query pipelines in the Coveo organization.
When a query is sent to the Search API:
- If the search token enforces a pipeline, go to Step 4 using the search token-enforced pipeline (bypassing its condition, if any).
- Otherwise, if the search interface enforces a pipeline, go to Step 4 using the search interface-enforced pipeline (bypassing its condition, if any).
- Otherwise, for each pipeline that has a condition in the Coveo organization:
- Route the query through the pipeline.
-
Unless a specific query pipeline is enforced (see Steps 1 and 2), pipelines with conditions are evaluated sequentially until a condition is satisfied (see Step 3). The order of evaluation of pipelines is based on the
position
attribute, which is automatically populated when a pipeline is created, and can’t be changed thereafter. In essence, this means that pipelines with conditions are typically evaluated from oldest to newest. This is slightly counter-intuitive, as pipelines are displayed in alphabetical order in the Coveo Administration Console. You can use the List query pipelines Search API operation to retrieve the actualposition
value of each pipeline in a Coveo organization. -
It’s possible for the default query pipeline to have a condition. When this is the case, the default pipeline may be evaluated just like any other pipeline with a condition (see Step 3). However, if the query doesn’t satisfy the condition of any of the evaluated pipelines, it will ultimately be routed through the default pipeline, bypassing its condition.