| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.apache.solr.search; |
| |
| import org.apache.solr.common.params.SolrParams; |
| import org.apache.solr.request.SolrQueryRequest; |
| |
| /** |
| * Create a dismax query from the input value. |
| * <br>localParams are checked before global request params. |
| * <br>Example: <code>{!dismax qf='myfield mytitle^2'}foo</code> creates a dismax query across |
| * across myfield and mytitle, with a higher weight on mytitle. |
| * |
| * <p> |
| * A Generic query plugin designed to be given a simple query expression |
| * from a user, which it will then query against a variety of |
| * pre-configured fields, in a variety of ways, using BooleanQueries, |
| * DisjunctionMaxQueries, and PhraseQueries. |
| * </p> |
| * |
| * <p> |
| * All of the following options may be configured for this plugin |
| * in the solrconfig as defaults, and may be overriden as request parameters |
| * </p> |
| * |
| * <ul> |
| * <li>q.alt - An alternate query to be used in cases where the main |
| * query (q) is not specified (or blank). This query should |
| * be expressed in the Standard SolrQueryParser syntax (you |
| * can use <code>q.alt=*:*</code> to denote that all documents |
| * should be returned when no query is specified) |
| * </li> |
| * <li>tie - (Tie breaker) float value to use as tiebreaker in |
| * DisjunctionMaxQueries (should be something much less than 1) |
| * </li> |
| * <li> qf - (Query Fields) fields and boosts to use when building |
| * DisjunctionMaxQueries from the users query. Format is: |
| * "<code>fieldA^1.0 fieldB^2.2</code>". |
| * This param can be specified multiple times, and the fields |
| * are additive. |
| * </li> |
| * <li> mm - (Minimum Match) this supports a wide variety of |
| * complex expressions. |
| * read {@link org.apache.solr.util.SolrPluginUtils#setMinShouldMatch SolrPluginUtils.setMinShouldMatch} and <a href="{@docRoot}/org/apache/solr/util/doc-files/min-should-match.html">mm expression format</a> for details. |
| * </li> |
| * <li> pf - (Phrase Fields) fields/boosts to make phrase queries out |
| * of, to boost the users query for exact matches on the specified fields. |
| * Format is: "<code>fieldA^1.0 fieldB^2.2</code>". |
| * This param can be specified multiple times, and the fields |
| * are additive. |
| * </li> |
| * <li> ps - (Phrase Slop) amount of slop on phrase queries built for pf |
| * fields. |
| * </li> |
| * <li> qs - (Query Slop) amount of slop on phrase queries explicitly |
| * specified in the "q" for qf fields. |
| * </li> |
| * <li> bq - (Boost Query) a raw lucene query that will be included in the |
| * users query to influence the score. If this is a BooleanQuery |
| * with a default boost (1.0f), then the individual clauses will be |
| * added directly to the main query. Otherwise, the query will be |
| * included as is. |
| * This param can be specified multiple times, and the boosts are |
| * are additive. NOTE: the behaviour listed above is only in effect |
| * if a single <code>bq</code> paramter is specified. Hence you can |
| * disable it by specifying an additional, blank, <code>bq</code> |
| * parameter. |
| * </li> |
| * <li> bf - (Boost Functions) functions (with optional boosts) that will be |
| * included in the users query to influence the score. |
| * Format is: "<code>funcA(arg1,arg2)^1.2 |
| * funcB(arg3,arg4)^2.2</code>". NOTE: Whitespace is not allowed |
| * in the function arguments. |
| * This param can be specified multiple times, and the functions |
| * are additive. |
| * </li> |
| * <li> fq - (Filter Query) a raw lucene query that can be used |
| * to restrict the super set of products we are interested in - more |
| * efficient then using bq, but doesn't influence score. |
| * This param can be specified multiple times, and the filters |
| * are additive. |
| * </li> |
| * </ul> |
| * |
| * <p> |
| * The following options are only available as request params... |
| * </p> |
| * |
| * <ul> |
| * <li> q - (Query) the raw unparsed, unescaped, query from the user. |
| * </li> |
| * <li>sort - (Order By) list of fields and direction to sort on. |
| * </li> |
| * </ul> |
| * |
| */ |
| public class DisMaxQParserPlugin extends QParserPlugin { |
| public static final String NAME = "dismax"; |
| |
| @Override |
| public QParser createParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) { |
| return new DisMaxQParser(qstr, localParams, params, req); |
| } |
| } |