Min Number Should Match Specification Format

This document explains the format used for specifying the "Min Number Should Match" criteria of the BooleanQuery objects built by the DisMaxRequestHandler.

Explanation of Concept: "Min Number Should Match"

:TODO:

Specification Format

Specification strings may have the following formats...

3
A positive integer, indicating a fixed value regardless of the number of optional clauses.
-2
A negative integer, indicating that the total number of optional clauses, minus this number should be mandatory.
75%
A percentage, indicating that this percent of the total number of optional clauses are necessary. The number computed from the percentage is rounded down and used as the minimum.
-25%
A negative percentage, indicating that this percent of the total number of optional clauses can be missing. The number computed from the percentage is rounded down, before being subtracted from the total to determine the minimum.
3<90%
A positive integer, followed by the less-than symbol, followed by any of the previously mentioned specifiers is a conditional specification. It indicates that if the number of optional clauses is equal to (or less than) the integer, they are all required, but if it's greater than the integer, the specification applies. In this example: if there are 1 to 3 clauses they are all required, but for 4 or more clauses only 90% are required.
2<-25% 9<-3
Multiple conditional specifications can be separated by spaces, each one only being valid for numbers greater than the one before it. In this example: if there are 1 or 2 clauses both are required, if there are 3-9 clauses all but 25% are required, and if there are more than 9 clauses, all but three are required.

A few important notes...