mirror of https://github.com/apache/lucene.git
fix BoostedQuery.rewrite
git-svn-id: https://svn.apache.org/repos/asf/lucene/solr/trunk@579445 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
0658c38980
commit
c947254a3d
|
@ -40,7 +40,11 @@ public class BoostedQuery extends Query {
|
||||||
public ValueSource getValueSource() { return boostVal; }
|
public ValueSource getValueSource() { return boostVal; }
|
||||||
|
|
||||||
public Query rewrite(IndexReader reader) throws IOException {
|
public Query rewrite(IndexReader reader) throws IOException {
|
||||||
return q.rewrite(reader);
|
Query newQ = q.rewrite(reader);
|
||||||
|
if (newQ == q) return this;
|
||||||
|
BoostedQuery bq = (BoostedQuery)this.clone();
|
||||||
|
bq.q = newQ;
|
||||||
|
return bq;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void extractTerms(Set terms) {
|
public void extractTerms(Set terms) {
|
||||||
|
@ -53,12 +57,11 @@ public class BoostedQuery extends Query {
|
||||||
|
|
||||||
private class BoostedWeight implements Weight {
|
private class BoostedWeight implements Weight {
|
||||||
Searcher searcher;
|
Searcher searcher;
|
||||||
Weight weight;
|
Weight qWeight;
|
||||||
boolean qStrict;
|
|
||||||
|
|
||||||
public BoostedWeight(Searcher searcher) throws IOException {
|
public BoostedWeight(Searcher searcher) throws IOException {
|
||||||
this.searcher = searcher;
|
this.searcher = searcher;
|
||||||
this.weight = q.weight(searcher);
|
this.qWeight = q.weight(searcher);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Query getQuery() {
|
public Query getQuery() {
|
||||||
|
@ -70,18 +73,18 @@ public class BoostedQuery extends Query {
|
||||||
}
|
}
|
||||||
|
|
||||||
public float sumOfSquaredWeights() throws IOException {
|
public float sumOfSquaredWeights() throws IOException {
|
||||||
float sum = weight.sumOfSquaredWeights();
|
float sum = qWeight.sumOfSquaredWeights();
|
||||||
sum *= getBoost() * getBoost();
|
sum *= getBoost() * getBoost();
|
||||||
return sum ;
|
return sum ;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void normalize(float norm) {
|
public void normalize(float norm) {
|
||||||
norm *= getBoost();
|
norm *= getBoost();
|
||||||
weight.normalize(norm);
|
qWeight.normalize(norm);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Scorer scorer(IndexReader reader) throws IOException {
|
public Scorer scorer(IndexReader reader) throws IOException {
|
||||||
Scorer subQueryScorer = weight.scorer(reader);
|
Scorer subQueryScorer = qWeight.scorer(reader);
|
||||||
return new BoostedQuery.CustomScorer(getSimilarity(searcher), reader, this, subQueryScorer, boostVal);
|
return new BoostedQuery.CustomScorer(getSimilarity(searcher), reader, this, subQueryScorer, boostVal);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -125,7 +128,7 @@ public class BoostedQuery extends Query {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Explanation explain(int doc) throws IOException {
|
public Explanation explain(int doc) throws IOException {
|
||||||
Explanation subQueryExpl = weight.weight.explain(reader,doc);
|
Explanation subQueryExpl = weight.qWeight.explain(reader,doc);
|
||||||
if (!subQueryExpl.isMatch()) {
|
if (!subQueryExpl.isMatch()) {
|
||||||
return subQueryExpl;
|
return subQueryExpl;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue