@Override
    public Result search(Query query, Execution execution) {
        RewriterUtils.log(logger, query, "Entering SearchChainDispatcherSearcher");

        // Retrieve search chain specified by user through REWRITER_CHAIN
        String rewriterChain = RewriterUtils.getRewriterChain(query);

        // Skipping to next searcher if no rewriter chain is specified
        if(rewriterChain==null || rewriterChain.equals("")) {
            RewriterUtils.log(logger, query, "No rewriter chain is specified, " +
                              "skipping to the next searcher");
            return execution.search(query);
        }

        // Execute rewriter search chain
        RewriterUtils.log(logger, query, "Redirecting to chain " + rewriterChain);
        Chain<Searcher> myChain = execution.searchChainRegistry().getChain(rewriterChain);
        if(myChain==null) {
            RewriterUtils.log(logger, query, "Invalid search chain specified, " +
                              "skipping to the next searcher");
            return execution.search(query);
        }
        new Execution(myChain, execution.context()).search(query);
        RewriterUtils.log(logger, query, "Finish executing search chain " + rewriterChain);

        // Continue down the chain ignoring the result from REWRITER_CHAIN
        // since the rewriters only modify the query but not the result
        return execution.search(query);
    }
Execute another search chain specified by the user<br>
- Retrieve search chain specified by the user through
  param<br>
- Execute specified search chain if exist
container-search/src/main/java/com/yahoo/search/query/rewrite/SearchChainDispatcherSearcher.java