/// 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:
///
Weight
is constructed by a top-level query,
/// given a Searcher
({@link Query#CreateWeight(Searcher)}).
/// Weight
to compute
/// the query normalization factor {@link Similarity#QueryNorm(float)}
/// of the query clauses contained in the query.
/// Scorer
is constructed by {@link #Scorer(IndexReader)}.
///