Although proximity queries are useful, the fact that they require all terms to be
present can make them overly strict.
It’s the same issue that we discussed in
Controlling Precision in Full-Text Search: if six out of seven terms match,
a document is probably relevant enough to be worth showing to the user, but
match_phrase query would exclude it.
Instead of using proximity matching as an absolute requirement, we can use it as a signal—as one of potentially many queries, each of which contributes to the overall score for each document (see Most Fields).
We can use a simple
match query as a
must clause. This is the query that
will determine which documents are included in our result set. We can trim
the long tail with the
minimum_should_match parameter. Then we can add other,
more specific queries as
should clauses. Every one that matches will
increase the relevance of the matching docs.
We could, of course, include other queries in the
should clause, where each
query targets a specific aspect of relevance.