mirror of https://github.com/apache/lucene.git
PR 13757 follow-up: add missing with-discountOverlaps Similarity constructor variants, CHANGES.txt entries (#13845)
(cherry picked from commit dab731175c
)
This commit is contained in:
parent
69dcf5823d
commit
cbd8b5218a
|
@ -7,7 +7,7 @@ http://s.apache.org/luceneversions
|
||||||
|
|
||||||
API Changes
|
API Changes
|
||||||
---------------------
|
---------------------
|
||||||
(No changes)
|
* GITHUB#13845: Add missing with-discountOverlaps Similarity constructor variants. (Pierre Salagnac, Christine Poerschke, Robert Muir)
|
||||||
|
|
||||||
New Features
|
New Features
|
||||||
---------------------
|
---------------------
|
||||||
|
@ -350,6 +350,9 @@ API Changes
|
||||||
* GITHUB#13568, GITHUB#13750: Add DrillSideways#search method that supports any CollectorManagers for drill-sideways dimensions
|
* GITHUB#13568, GITHUB#13750: Add DrillSideways#search method that supports any CollectorManagers for drill-sideways dimensions
|
||||||
or drill-down. (Egor Potemkin)
|
or drill-down. (Egor Potemkin)
|
||||||
|
|
||||||
|
* GITHUB#13757: For similarities, provide default computeNorm implementation and remove remaining discountOverlaps setters.
|
||||||
|
(Christine Poerschke, Adrien Grand, Robert Muir)
|
||||||
|
|
||||||
New Features
|
New Features
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
|
|
|
@ -44,13 +44,26 @@ public abstract class Axiomatic extends SimilarityBase {
|
||||||
protected final int queryLen;
|
protected final int queryLen;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor setting all Axiomatic hyperparameters
|
* Constructor setting all Axiomatic hyperparameters and using default discountOverlaps value.
|
||||||
*
|
*
|
||||||
* @param s hyperparam for the growth function
|
* @param s hyperparam for the growth function
|
||||||
* @param queryLen the query length
|
* @param queryLen the query length
|
||||||
* @param k hyperparam for the primitive weighting function
|
* @param k hyperparam for the primitive weighting function
|
||||||
*/
|
*/
|
||||||
public Axiomatic(float s, int queryLen, float k) {
|
public Axiomatic(float s, int queryLen, float k) {
|
||||||
|
this(true, s, queryLen, k);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor setting all Axiomatic hyperparameters
|
||||||
|
*
|
||||||
|
* @param discountOverlaps true if overlap tokens should not impact document length for scoring.
|
||||||
|
* @param s hyperparam for the growth function
|
||||||
|
* @param queryLen the query length
|
||||||
|
* @param k hyperparam for the primitive weighting function
|
||||||
|
*/
|
||||||
|
public Axiomatic(boolean discountOverlaps, float s, int queryLen, float k) {
|
||||||
|
super(discountOverlaps);
|
||||||
if (Float.isFinite(s) == false || Float.isNaN(s) || s < 0 || s > 1) {
|
if (Float.isFinite(s) == false || Float.isNaN(s) || s < 0 || s > 1) {
|
||||||
throw new IllegalArgumentException("illegal s value: " + s + ", must be between 0 and 1");
|
throw new IllegalArgumentException("illegal s value: " + s + ", must be between 0 and 1");
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,11 +46,23 @@ public class DFISimilarity extends SimilarityBase {
|
||||||
private final Independence independence;
|
private final Independence independence;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create DFI with the specified divergence from independence measure
|
* Create DFI with the specified divergence from independence measure and using default
|
||||||
|
* discountOverlaps value
|
||||||
*
|
*
|
||||||
* @param independenceMeasure measure of divergence from independence
|
* @param independenceMeasure measure of divergence from independence
|
||||||
*/
|
*/
|
||||||
public DFISimilarity(Independence independenceMeasure) {
|
public DFISimilarity(Independence independenceMeasure) {
|
||||||
|
this(independenceMeasure, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create DFI with the specified parameters
|
||||||
|
*
|
||||||
|
* @param independenceMeasure measure of divergence from independence
|
||||||
|
* @param discountOverlaps true if overlap tokens should not impact document length for scoring.
|
||||||
|
*/
|
||||||
|
public DFISimilarity(Independence independenceMeasure, boolean discountOverlaps) {
|
||||||
|
super(discountOverlaps);
|
||||||
this.independence = independenceMeasure;
|
this.independence = independenceMeasure;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -83,7 +83,7 @@ public class DFRSimilarity extends SimilarityBase {
|
||||||
protected final Normalization normalization;
|
protected final Normalization normalization;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates DFRSimilarity from the three components.
|
* Creates DFRSimilarity from the three components and using default discountOverlaps value.
|
||||||
*
|
*
|
||||||
* <p>Note that <code>null</code> values are not allowed: if you want no normalization, instead
|
* <p>Note that <code>null</code> values are not allowed: if you want no normalization, instead
|
||||||
* pass {@link NoNormalization}.
|
* pass {@link NoNormalization}.
|
||||||
|
@ -98,7 +98,7 @@ public class DFRSimilarity extends SimilarityBase {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates DFRSimilarity from the three components.
|
* Creates DFRSimilarity from the three components and with the specified discountOverlaps value.
|
||||||
*
|
*
|
||||||
* <p>Note that <code>null</code> values are not allowed: if you want no normalization, instead
|
* <p>Note that <code>null</code> values are not allowed: if you want no normalization, instead
|
||||||
* pass {@link NoNormalization}.
|
* pass {@link NoNormalization}.
|
||||||
|
|
|
@ -76,7 +76,7 @@ public class IBSimilarity extends SimilarityBase {
|
||||||
protected final Normalization normalization;
|
protected final Normalization normalization;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates IBSimilarity from the three components.
|
* Creates IBSimilarity from the three components and using default discountOverlaps value.
|
||||||
*
|
*
|
||||||
* <p>Note that <code>null</code> values are not allowed: if you want no normalization, instead
|
* <p>Note that <code>null</code> values are not allowed: if you want no normalization, instead
|
||||||
* pass {@link NoNormalization}.
|
* pass {@link NoNormalization}.
|
||||||
|
@ -86,6 +86,26 @@ public class IBSimilarity extends SimilarityBase {
|
||||||
* @param normalization term frequency normalization
|
* @param normalization term frequency normalization
|
||||||
*/
|
*/
|
||||||
public IBSimilarity(Distribution distribution, Lambda lambda, Normalization normalization) {
|
public IBSimilarity(Distribution distribution, Lambda lambda, Normalization normalization) {
|
||||||
|
this(distribution, lambda, normalization, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates IBSimilarity from the three components and with the specified discountOverlaps value.
|
||||||
|
*
|
||||||
|
* <p>Note that <code>null</code> values are not allowed: if you want no normalization, instead
|
||||||
|
* pass {@link NoNormalization}.
|
||||||
|
*
|
||||||
|
* @param distribution probabilistic distribution modeling term occurrence
|
||||||
|
* @param lambda distribution's λ<sub>w</sub> parameter
|
||||||
|
* @param normalization term frequency normalization
|
||||||
|
* @param discountOverlaps true if overlap tokens should not impact document length for scoring.
|
||||||
|
*/
|
||||||
|
public IBSimilarity(
|
||||||
|
Distribution distribution,
|
||||||
|
Lambda lambda,
|
||||||
|
Normalization normalization,
|
||||||
|
boolean discountOverlaps) {
|
||||||
|
super(discountOverlaps);
|
||||||
this.distribution = distribution;
|
this.distribution = distribution;
|
||||||
this.lambda = lambda;
|
this.lambda = lambda;
|
||||||
this.normalization = normalization;
|
this.normalization = normalization;
|
||||||
|
|
|
@ -37,6 +37,13 @@ public class IndriDirichletSimilarity extends LMSimilarity {
|
||||||
/** The μ parameter. */
|
/** The μ parameter. */
|
||||||
private final float mu;
|
private final float mu;
|
||||||
|
|
||||||
|
/** Instantiates the similarity with the provided parameters. */
|
||||||
|
public IndriDirichletSimilarity(
|
||||||
|
CollectionModel collectionModel, boolean discountOverlaps, float mu) {
|
||||||
|
super(collectionModel, discountOverlaps);
|
||||||
|
this.mu = mu;
|
||||||
|
}
|
||||||
|
|
||||||
/** Instantiates the similarity with the provided μ parameter. */
|
/** Instantiates the similarity with the provided μ parameter. */
|
||||||
public IndriDirichletSimilarity(CollectionModel collectionModel, float mu) {
|
public IndriDirichletSimilarity(CollectionModel collectionModel, float mu) {
|
||||||
super(collectionModel);
|
super(collectionModel);
|
||||||
|
|
|
@ -39,7 +39,13 @@ public class LMDirichletSimilarity extends LMSimilarity {
|
||||||
|
|
||||||
/** Instantiates the similarity with the provided μ parameter. */
|
/** Instantiates the similarity with the provided μ parameter. */
|
||||||
public LMDirichletSimilarity(CollectionModel collectionModel, float mu) {
|
public LMDirichletSimilarity(CollectionModel collectionModel, float mu) {
|
||||||
super(collectionModel);
|
this(collectionModel, true, mu);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Instantiates the similarity with the provided parameters. */
|
||||||
|
public LMDirichletSimilarity(
|
||||||
|
CollectionModel collectionModel, boolean discountOverlaps, float mu) {
|
||||||
|
super(collectionModel, discountOverlaps);
|
||||||
if (Float.isFinite(mu) == false || mu < 0) {
|
if (Float.isFinite(mu) == false || mu < 0) {
|
||||||
throw new IllegalArgumentException(
|
throw new IllegalArgumentException(
|
||||||
"illegal mu value: " + mu + ", must be a non-negative finite value");
|
"illegal mu value: " + mu + ", must be a non-negative finite value");
|
||||||
|
|
|
@ -43,7 +43,13 @@ public class LMJelinekMercerSimilarity extends LMSimilarity {
|
||||||
|
|
||||||
/** Instantiates with the specified collectionModel and λ parameter. */
|
/** Instantiates with the specified collectionModel and λ parameter. */
|
||||||
public LMJelinekMercerSimilarity(CollectionModel collectionModel, float lambda) {
|
public LMJelinekMercerSimilarity(CollectionModel collectionModel, float lambda) {
|
||||||
super(collectionModel);
|
this(collectionModel, true, lambda);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Instantiates with the specified collectionModel and parameters. */
|
||||||
|
public LMJelinekMercerSimilarity(
|
||||||
|
CollectionModel collectionModel, boolean discountOverlaps, float lambda) {
|
||||||
|
super(collectionModel, discountOverlaps);
|
||||||
if (Float.isNaN(lambda) || lambda <= 0 || lambda > 1) {
|
if (Float.isNaN(lambda) || lambda <= 0 || lambda > 1) {
|
||||||
throw new IllegalArgumentException("lambda must be in the range (0 .. 1]");
|
throw new IllegalArgumentException("lambda must be in the range (0 .. 1]");
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,6 +43,12 @@ public abstract class LMSimilarity extends SimilarityBase {
|
||||||
|
|
||||||
/** Creates a new instance with the specified collection language model. */
|
/** Creates a new instance with the specified collection language model. */
|
||||||
public LMSimilarity(CollectionModel collectionModel) {
|
public LMSimilarity(CollectionModel collectionModel) {
|
||||||
|
this(collectionModel, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Creates a new instance with the specified collection language model and discountOverlaps. */
|
||||||
|
public LMSimilarity(CollectionModel collectionModel, boolean discountOverlaps) {
|
||||||
|
super(discountOverlaps);
|
||||||
this.collectionModel = collectionModel;
|
this.collectionModel = collectionModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue