Class BayesianScoreQuery
P = sigmoid(alpha * (score - beta)).
This implements the query-level Bayesian transform from "Bayesian BM25": the inner query
(typically a multi-term BooleanQuery with BM25Similarity) produces a raw score, and this wrapper
maps it to a probability in (0, 1) suitable for combination with other probability signals via
LogOddsFusionQuery.
The alpha parameter controls the sigmoid steepness (score sensitivity), and beta controls the
midpoint (decision boundary). These can be set manually or estimated from the score distribution
via BayesianScoreEstimator.
An optional base rate encodes the corpus-level prior probability that a random document is
relevant to a random query. When set, the posterior is computed in log-odds space:
sigmoid(alpha * (score - beta) + logit(baseRate)). This shifts scores down for rare-relevance
corpora, improving calibration.
- WARNING: This API is experimental and might change in incompatible ways in the next release.
-
Constructor Summary
ConstructorsConstructorDescriptionBayesianScoreQuery(Query query, float alpha, float beta) Creates a BayesianScoreQuery without base rate.BayesianScoreQuery(Query query, float alpha, float beta, float baseRate) Creates a BayesianScoreQuery with base rate. -
Method Summary
Modifier and TypeMethodDescriptioncreateWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost) Expert: Constructs an appropriate Weight implementation for this query.booleanOverride and implement query instance equivalence properly in a subclass.floatgetAlpha()Returns the sigmoid steepness parameter.floatReturns the base rate, or 0 if not set.floatgetBeta()Returns the sigmoid midpoint parameter.getQuery()Returns the wrapped query.inthashCode()Override and implement query hash code properly in a subclass.rewrite(IndexSearcher indexSearcher) Expert: called to re-write queries into primitive queries.Prints a query to a string, withfieldassumed to be the default field and omitted.voidvisit(QueryVisitor visitor) Recurse through the query tree, visiting any child queries.Methods inherited from class org.apache.lucene.search.Query
classHash, sameClassAs, toString
-
Constructor Details
-
BayesianScoreQuery
Creates a BayesianScoreQuery with base rate.- Parameters:
query- the inner query whose scores will be transformedalpha- sigmoid steepness (must be positive and finite)beta- sigmoid midpoint (must be finite)baseRate- corpus-level relevance prior in (0, 1), or 0 to disable. When positive, adds logit(baseRate) to the log-odds before sigmoid, shifting scores to account for the rarity of relevant documents.
-
BayesianScoreQuery
Creates a BayesianScoreQuery without base rate.- Parameters:
query- the inner query whose scores will be transformedalpha- sigmoid steepness (must be positive and finite)beta- sigmoid midpoint (must be finite)
-
-
Method Details
-
getQuery
Returns the wrapped query. -
getAlpha
public float getAlpha()Returns the sigmoid steepness parameter. -
getBeta
public float getBeta()Returns the sigmoid midpoint parameter. -
getBaseRate
public float getBaseRate()Returns the base rate, or 0 if not set. -
createWeight
public Weight createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost) throws IOException Description copied from class:QueryExpert: Constructs an appropriate Weight implementation for this query.Only implemented by primitive queries, which re-write to themselves.
- Overrides:
createWeightin classQuery- Parameters:
scoreMode- How the produced scorers will be consumed.boost- The boost that is propagated by the parent queries.- Throws:
IOException
-
rewrite
Description copied from class:QueryExpert: called to re-write queries into primitive queries. For example, a PrefixQuery will be rewritten into a BooleanQuery that consists of TermQuerys.Callers are expected to call
rewritemultiple times if necessary, until the rewritten query is the same as the original query.The rewrite process may be able to make use of IndexSearcher's executor and be executed in parallel if the executor is provided.
- Overrides:
rewritein classQuery- Throws:
IOException- See Also:
-
visit
Description copied from class:QueryRecurse through the query tree, visiting any child queries. -
toString
Description copied from class:QueryPrints a query to a string, withfieldassumed to be the default field and omitted. -
equals
Description copied from class:QueryOverride and implement query instance equivalence properly in a subclass. This is required so thatQueryCacheworks properly.Typically a query will be equal to another only if it's an instance of the same class and its document-filtering properties are identical to those of the other instance. Utility methods are provided for certain repetitive code.
-
hashCode
public int hashCode()Description copied from class:QueryOverride and implement query hash code properly in a subclass. This is required so thatQueryCacheworks properly.
-