> ## Documentation Index
> Fetch the complete documentation index at: https://doc.lucidworks.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Query Pipeline Stages

export const LwTemplate = ({title = "Key questions to get you started", icon = "sparkles", cta = "Powered by Agent Studio", linkHref = "https://lucidworks.com/demo/?utm_source=docs&utm_medium=referral&utm_campaign=docs_cta_ai"}) => {
  const [isLoaded, setIsLoaded] = useState(false);
  useEffect(() => {
    const timer = setTimeout(() => {
      setIsLoaded(true);
    }, 500);
    return () => clearTimeout(timer);
  }, []);
  return <div className="lw-template-container">
      <Card title={title} icon={icon}>
        {isLoaded && <span dangerouslySetInnerHTML={{
    __html: `<lw-template id="a029c1a9-28be-427e-b0e1-5d918920246a"></lw-template
            >`
  }} />}
        <Link href={linkHref} className="agent-studio-link text-left text-gray-600 gap-2 dark:text-gray-400 text-sm font-medium flex flex-row items-center hover:text-primary dark:hover:text-primary-light group-hover:text-primary group-hover:dark:text-primary-light">Powered by Lucidworks Agent Studio</Link>
      </Card>
    </div>;
};

[localhost link]: http://localhost:3000/docs/4/fusion-server/concepts/querying/pipelines/query-pipeline-stages

[mintlify link]: https://doc.lucidworks.com/docs/4/fusion-server/concepts/querying/pipelines/query-pipeline-stages

[old doc.lw link]: https://doc.lucidworks.com/fusion/5.9/169

A query pipeline is made up of a series of query stages that process incoming search queries.

A pipeline stage definition associates a unique ID with a set of properties.
These definitions are registered with the Fusion API service and stored in ZooKeeper for re-use across pipelines and search applications.

Fusion includes a number of specialized query stages as well as a JavaScript stage that allows advanced processing via a JavaScript program.

<LwTemplate />

## Configuring query pipeline stages

* In the Fusion UI, the [Query Workbench](/docs/4/fusion-server/concepts/querying/query-workbench) provides an environment for configuring the stages in a query pipeline.
* The [Query Stages API](/docs/4/fusion-server/reference/api/query/query-stages-api) is used to create, list, update, or delete query stages using JSON. See also the [Query Pipelines API](/docs/4/fusion-server/reference/api/query/query-pipelines-api).

## Asynchronous query pipeline processing

Query pipeline processing performance can be improved by enabling asynchronous processing for certain stages that make requests to secondary collections, external databases, and so on. The following stages support asynchronous processing:

* [Active Directory Security Trimming](/docs/4/fusion-server/reference/pipeline-stages/query/active-directory-security-trimming-query-stage)
* [Apply Rules](/docs/4/fusion-server/reference/pipeline-stages/query/query-rules-query-stage)
* [Boost with Signals](/docs/4/fusion-server/reference/pipeline-stages/query/recommendation-boosting-query-stage)
* [JDBC Lookup](/docs/4/fusion-server/reference/pipeline-stages/query/jdbc-query-stage)
* [Security Trimming](/docs/4/fusion-server/reference/pipeline-stages/query/security-trimming-query-stage)
* [Solr Subquery](/docs/4/fusion-server/reference/pipeline-stages/query/subquery-query-stage)

This feature uses the fork-and-join model, where any of the stages above can create a fork on the pipeline. The parallel processes are joined again using the [Merge Async Results stage](/docs/4/fusion-server/reference/pipeline-stages/query/merge-async-results-query-stage) at a later point in the pipeline.

## Conditional query processing

Query Pipeline stages are used to modify Request objects
and Response objects. Each stage can include a conditional JavaScript expression (the `condition` property in its configuration) that can access these objects.

For example, this condition first checks that the property `fusion-user-name` is specified in the Request object, then checks for a particular value:

```js wrap  theme={"dark"}
request.hasParam("fusion-user-name") && request.getFirstParam("fusion-user-name").equals("SuperUser");
```

## Reference topics

See these reference topics for complete details about each query pipeline stage:

### Setup

* [Active Directory Security Trimming](/docs/4/fusion-server/reference/pipeline-stages/query/active-directory-security-trimming-query-stage)
* [Field Facet](/docs/4/fusion-server/reference/pipeline-stages/query/facet-query-stage)
* [Query Fields](/docs/4/fusion-server/reference/pipeline-stages/query/search-fields-query-stage)
* [Security Trimming](/docs/4/fusion-server/reference/pipeline-stages/query/security-trimming-query-stage)

### Relevancy

* [Block Documents](/docs/4/fusion-server/reference/pipeline-stages/query/block-documents-query-stage)
* [Landing Pages](/docs/4/fusion-server/reference/pipeline-stages/query/landing-pages-query-stage)
* [Parameterized Boosting](/docs/4/fusion-server/reference/pipeline-stages/query/advanced-boosting-query-stage)
* [Recommend More Like This](/docs/4/fusion-server/reference/pipeline-stages/query/solr-more-like-this-query-stage)
* [Recommend Items for User](/docs/4/fusion-server/reference/pipeline-stages/query/recommend-items-for-user-query-stage)
* [Recommend Items for Item](/docs/4/fusion-server/reference/pipeline-stages/query/recommend-items-for-item-query-stage)

### Query rewriting

* [Text Tagger](/docs/4/fusion-server/reference/pipeline-stages/query/text-tagger-query-stage)
* [Apply Rules](/docs/4/fusion-server/reference/pipeline-stages/query/query-rules-query-stage)

### Response rewriting

* [Response Document Exclusion Stage](/docs/4/fusion-server/reference/pipeline-stages/query/response-document-exclusion-query-stage)
* [Response Document Field Redaction Stage](/docs/4/fusion-server/reference/pipeline-stages/query/result-field-redaction-query-stage)
* [Response Pairwise Swap](/docs/4/fusion-server/reference/pipeline-stages/query/response-pairwise-swap-query-stage)
* [Response Shuffle Stage](/docs/4/fusion-server/reference/pipeline-stages/query/response-shuffle-query-stage)
* [Modify Response with Rules](/docs/4/fusion-server/reference/pipeline-stages/query/rules-augment-response-query-stage)

### Fetch data

* [JDBC Lookup](/docs/4/fusion-server/reference/pipeline-stages/query/jdbc-query-stage)
* [REST Query Stage](/docs/4/fusion-server/reference/pipeline-stages/query/query-rpc-query-stage)
* [Solr Query](/docs/4/fusion-server/reference/pipeline-stages/query/solr-query-stage)
* [Solr Subquery](/docs/4/fusion-server/reference/pipeline-stages/query/subquery-query-stage)

### Troubleshooting

* [Logging](/docs/4/fusion-server/reference/pipeline-stages/query/logging-query-stage)
* [Send PagerDuty Message](/docs/4/fusion-server/reference/pipeline-stages/query/pagerduty-query-stage)
* [Send Slack Message](/docs/4/fusion-server/reference/pipeline-stages/query/slack-query-stage)
* [Send SMTP Email](/docs/4/fusion-server/reference/pipeline-stages/query/email-query-stage)
* [Write Log Message](/docs/4/fusion-server/reference/pipeline-stages/query/logging-message-query-stage)

### Advanced

* [Additional Query Parameters](/docs/4/fusion-server/reference/pipeline-stages/query/set-query-params-stage)
* [JavaScript Query Stage](/docs/4/fusion-server/reference/pipeline-stages/query/javascript-query-stage)
* [Managed Javascript](/docs/4/fusion-server/reference/pipeline-stages/query/managed-javascript-query-stage)
* [Retrieve Stored Parameters](/docs/4/fusion-server/reference/pipeline-stages/query/stored-parameters-query-stage)

### Other

* [Analytics Catalog Query](/docs/4/fusion-server/reference/pipeline-stages/query/analytics-catalog-query-stage)
* [Call Pipeline](/docs/4/fusion-server/reference/pipeline-stages/query/call-pipeline-query-stage)
* [Experiment Query](/docs/4/fusion-server/reference/pipeline-stages/query/experiment-query-stage)
* [Parameterized Faceting](/docs/4/fusion-server/reference/pipeline-stages/query/parameterized-faceting-query-stage)
* [Return Query Parameters](/docs/4/fusion-server/reference/pipeline-stages/query/return-queryparams-query-stage)
* [Rollup Aggregation](/docs/4/fusion-server/reference/pipeline-stages/query/rollup-aggregator-query-stage)
