org.apache.lucene.search

## Class QueryUtils

- java.lang.Object
- - org.apache.lucene.search.QueryUtils

    public class QueryUtils
    extends Object

Utility class for sanity-checking queries.

### Nested Class Summary

Nested Classes
`static class` `QueryUtils.FCInvisibleMultiReader` This is a MultiReader that can be used for randomly wrapping other readers without creating FieldCache insanity.

### Constructor Summary

Constructors
Constructor and Description
`QueryUtils()`

### Method Summary

Methods
`static void` `check(Query q)` Check the types of things query objects should be able to do.
`static void` `check(Random random, Query q1, IndexSearcher s)` Various query sanity checks on a searcher, some checks are only done for instanceof IndexSearcher.
`static void` `check(Random random, Query q1, IndexSearcher s, boolean wrap)`
`static void` `checkEqual(Query q1, Query q2)`
`static void` `checkExplanations(Query q, IndexSearcher s)` deep check that explanations of a query 'score' correctly
`static void` `checkFirstSkipTo(Query q, IndexSearcher s)` check that first skip on just created scorers always goes to the right doc
`static void` `checkHashEquals(Query q)` check very basic hashCode and equals
`static void` `checkSkipTo(Query q, IndexSearcher s)` alternate scorer skipTo(),skipTo(),next(),next(),skipTo(),skipTo(), etc and ensure a hitcollector receives same docs and scores
`static void` `checkUnequal(Query q1, Query q2)`
`static void` `purgeFieldCache(IndexReader r)`
`static IndexSearcher` `wrapUnderlyingReader(Random random, IndexSearcher s, int edge)` Given an IndexSearcher, returns a new IndexSearcher whose IndexReader is a MultiReader containing the Reader of the original IndexSearcher, as well as several "empty" IndexReaders -- some of which will have deleted documents in them.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### QueryUtils

    public QueryUtils()

### Method Detail

#### check

    public static void check(Query q)

Check the types of things query objects should be able to do.

#### checkHashEquals

    public static void checkHashEquals(Query q)

check very basic hashCode and equals

#### checkEqual

    public static void checkEqual(Query q1,
                  Query q2)

#### checkUnequal

    public static void checkUnequal(Query q1,
                    Query q2)

#### checkExplanations

    public static void checkExplanations(Query q,
                         IndexSearcher s)
                                  throws IOException

deep check that explanations of a query 'score' correctly

Throws:
  `IOException`

#### check

    public static void check(Random random,
             Query q1,
             IndexSearcher s)

Various query sanity checks on a searcher, some checks are only done for instanceof IndexSearcher.

See Also:
  `check(Query)`, `checkFirstSkipTo(org.apache.lucene.search.Query, org.apache.lucene.search.IndexSearcher)`, `checkSkipTo(org.apache.lucene.search.Query, org.apache.lucene.search.IndexSearcher)`, `checkExplanations(org.apache.lucene.search.Query, org.apache.lucene.search.IndexSearcher)`, `checkEqual(org.apache.lucene.search.Query, org.apache.lucene.search.Query)`

#### check

    public static void check(Random random,
             Query q1,
             IndexSearcher s,
             boolean wrap)

#### purgeFieldCache

    public static void purgeFieldCache(IndexReader r)
                                throws IOException

Throws:
  `IOException`

#### wrapUnderlyingReader

    public static IndexSearcher wrapUnderlyingReader(Random random,
                                     IndexSearcher s,
                                     int edge)
                                              throws IOException

Given an IndexSearcher, returns a new IndexSearcher whose IndexReader is a MultiReader containing the Reader of the original IndexSearcher, as well as several "empty" IndexReaders -- some of which will have deleted documents in them. This new IndexSearcher should behave exactly the same as the original IndexSearcher.

Parameters:
  `s` - the searcher to wrap
  `edge` - if negative, s will be the first sub; if 0, s will be in the middle, if positive s will be the last sub
Throws:
  `IOException`

#### checkSkipTo

    public static void checkSkipTo(Query q,
                   IndexSearcher s)
                            throws IOException

alternate scorer skipTo(),skipTo(),next(),next(),skipTo(),skipTo(), etc and ensure a hitcollector receives same docs and scores

Throws:
  `IOException`

#### checkFirstSkipTo

    public static void checkFirstSkipTo(Query q,
                        IndexSearcher s)
                                 throws IOException

check that first skip on just created scorers always goes to the right doc

Throws:
  `IOException`