| Expert: Calculate query weights and build query scorers.
The purpose of Weight is to make it so that searching does not modify
a Query, so that a Query instance can be reused.
Searcher dependent state of the query should reside in the Weight.
IndexReader dependent state should reside in the Scorer.
A Weight is used in the following way:
- A
Weight is constructed by a top-level query,
given a Searcher (
Query.createWeight(Searcher) ).
- The
Weight.sumOfSquaredWeights() method is called
on the
Weight to compute
the query normalization factor
Similarity.queryNorm(float) of the query clauses contained in the query.
- The query normalization factor is passed to
Weight.normalize(float) .
At this point the weighting is complete.
- A
Scorer is constructed by
Weight.scorer(IndexReader) .
|