You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-commits@lucene.apache.org by Apache Wiki <wi...@apache.org> on 2012/06/22 02:17:23 UTC

[Solr Wiki] Update of "ExtendedDisMax" by JanHoydahl

Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Solr Wiki" for change notification.

The "ExtendedDisMax" page has been changed by JanHoydahl:
http://wiki.apache.org/solr/ExtendedDisMax?action=diff&rev1=10&rev2=11

Comment:
ps2, ps3

  This parser supports full Lucene !QueryParser syntax including boolean operators 'AND', 'OR', 'NOT', '+' and '-', fielded search, term boosting, fuzzy, grouping with parens, phrase search, phrase slop, numeric ranges, wildcard search and more. If there is a syntax error in the input, such as non-existing field name or unbalanced double-quotes, the input is gracefully searched as literal strings.
  
  == Query Structure ==
- For each "word" in the query string, dismax builds a !DisjunctionMaxQuery object for that word across all of the fields in the `qf` param (with the appropriate boost values and a tiebreaker value set from the `tie` param).  These !DisjunctionMaxQuery objects are then put in a !BooleanQuery with the minNumberShouldMatch option set according to the `mm` param.  If any other params are specified, a larger !BooleanQuery is wrapped arround the first !BooleanQuery from the `qf` options, and the other params (`bf`, `bq`, `pf`, `pf2`, `pf3`) are added as optional clauses.  The only complex clause comes from from the `pf` param, which is a single !DisjuntionMaxQuery containing the whole query 'phrase' against each of the `pf` fields.
+ For each "word" in the query string, dismax builds a !DisjunctionMaxQuery object for that word across all of the fields in the `qf` param (with the appropriate boost values and a tiebreaker value set from the `tie` param).  These !DisjunctionMaxQuery objects are then put in a !BooleanQuery with the minNumberShouldMatch option set according to the `mm` param.  If any other params are specified, a larger !BooleanQuery is wrapped arround the first !BooleanQuery from the `qf` options, and the other params (`bf`, `bq`, `pf`, `pf2`, `pf3`, 'ps2', 'ps3') are added as optional clauses.  The only complex clause comes from from the `pf` param, which is a single !DisjuntionMaxQuery containing the whole query 'phrase' against each of the `pf` fields.
  
  /!\ :TODO: /!\ Need more detail on the query structure generated based on input ... a picture would be nice.
  
@@ -63, +63 @@

  === pf2 (Phrase bigram fields) ===
  As with 'pf' but chops the input into bi-grams, e.g. "the brown fox jumped" is queried as "the brown" "brown fox" "fox jumped"
  
+ === ps2 (Phrase bigram slop) ===
+ 
+ <!> [[Solr4.0]] As with 'ps' but sets default slop factor for 'pf2'. If not specified, 'ps' will be used.
+ 
  === pf3 (Phrase trigram fields) ===
  As with 'pf' but chops the input into tri-grams, e.g. "the brown fox jumped" is queried as "the brown fox" "brown fox jumped"
+ 
+ === ps3 (Phrase trigram slop) ===
+ 
+ <!> [[Solr4.0]] As with 'ps' but sets default slop factor for 'pf3'. If not specified, 'ps' will be used.
  
  === tie (Tie breaker) ===
  Float value to use as tiebreaker in !DisjunctionMaxQueries (should be something much less than 1)