You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@lucene.apache.org by ma...@apache.org on 2009/08/22 23:24:30 UTC
svn commit: r806894 - in /lucene/java/trunk: ./
src/java/org/apache/lucene/search/payloads/
src/test/org/apache/lucene/search/payloads/
Author: markrmiller
Date: Sat Aug 22 21:24:27 2009
New Revision: 806894
URL: http://svn.apache.org/viewvc?rev=806894&view=rev
Log:
LUCENE-1827: Make the payload span queries consistent
Added:
lucene/java/trunk/src/java/org/apache/lucene/search/payloads/PayloadNearQuery.java
- copied, changed from r806885, lucene/java/trunk/src/java/org/apache/lucene/search/payloads/BoostingNearQuery.java
lucene/java/trunk/src/java/org/apache/lucene/search/payloads/PayloadTermQuery.java
- copied, changed from r806885, lucene/java/trunk/src/java/org/apache/lucene/search/payloads/BoostingFunctionTermQuery.java
lucene/java/trunk/src/test/org/apache/lucene/search/payloads/TestPayloadNearQuery.java
- copied, changed from r806885, lucene/java/trunk/src/test/org/apache/lucene/search/payloads/TestBoostingNearQuery.java
lucene/java/trunk/src/test/org/apache/lucene/search/payloads/TestPayloadTermQuery.java
- copied, changed from r806885, lucene/java/trunk/src/test/org/apache/lucene/search/payloads/BoostingFunctionTermQueryTest.java
Removed:
lucene/java/trunk/src/java/org/apache/lucene/search/payloads/BoostingFunctionTermQuery.java
lucene/java/trunk/src/java/org/apache/lucene/search/payloads/BoostingNearQuery.java
lucene/java/trunk/src/java/org/apache/lucene/search/payloads/PayloadQuery.java
lucene/java/trunk/src/test/org/apache/lucene/search/payloads/BoostingFunctionTermQueryTest.java
lucene/java/trunk/src/test/org/apache/lucene/search/payloads/TestBoostingNearQuery.java
Modified:
lucene/java/trunk/CHANGES.txt
lucene/java/trunk/src/java/org/apache/lucene/search/payloads/BoostingTermQuery.java
lucene/java/trunk/src/java/org/apache/lucene/search/payloads/PayloadFunction.java
lucene/java/trunk/src/java/org/apache/lucene/search/payloads/package.html
Modified: lucene/java/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/java/trunk/CHANGES.txt?rev=806894&r1=806893&r2=806894&view=diff
==============================================================================
--- lucene/java/trunk/CHANGES.txt (original)
+++ lucene/java/trunk/CHANGES.txt Sat Aug 22 21:24:27 2009
@@ -691,12 +691,12 @@
SpanNearQuery that does not need to use the payloads, you can
disable loading them with a new constructor switch. (Mark Miller)
-33. LUCENE-1341: Added BoostingNearQuery to enable SpanNearQuery functionality
+33. LUCENE-1341: Added PayloadNearQuery to enable SpanNearQuery functionality
with payloads (Peter Keegan, Grant Ingersoll, Mark Miller)
-34. LUCENE-1790: Added BoostingFunctionTermQuery to enable scoring of payloads
+34. LUCENE-1790: Added PayloadTermQuery to enable scoring of payloads
based on the maximum payload seen for a document.
- Slight refactoring of Similarity and other payload queries (Grant Ingersoll)
+ Slight refactoring of Similarity and other payload queries (Grant Ingersoll, Mark Miller)
36. LUCENE-1749: Addition of FieldCacheSanityChecker utility, and
hooks to use it in all existing Lucene Tests. This class can
Modified: lucene/java/trunk/src/java/org/apache/lucene/search/payloads/BoostingTermQuery.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/search/payloads/BoostingTermQuery.java?rev=806894&r1=806893&r2=806894&view=diff
==============================================================================
--- lucene/java/trunk/src/java/org/apache/lucene/search/payloads/BoostingTermQuery.java (original)
+++ lucene/java/trunk/src/java/org/apache/lucene/search/payloads/BoostingTermQuery.java Sat Aug 22 21:24:27 2009
@@ -37,9 +37,9 @@
*
* @see org.apache.lucene.search.Similarity#scorePayload(String, byte[], int, int)
*
- * @deprecated See {@link org.apache.lucene.search.payloads.BoostingFunctionTermQuery}
+ * @deprecated See {@link org.apache.lucene.search.payloads.PayloadTermQuery}
*/
-public class BoostingTermQuery extends BoostingFunctionTermQuery implements PayloadQuery{
+public class BoostingTermQuery extends PayloadTermQuery {
public BoostingTermQuery(Term term) {
this(term, true);
@@ -53,14 +53,14 @@
return new BoostingTermWeight(this, searcher);
}
- protected class BoostingTermWeight extends BoostingFunctionTermWeight {
+ protected class BoostingTermWeight extends PayloadTermWeight {
public BoostingTermWeight(BoostingTermQuery query, Searcher searcher) throws IOException {
super(query, searcher);
}
public Scorer scorer(IndexReader reader, boolean scoreDocsInOrder, boolean topScorer) throws IOException {
- return new BoostingFunctionSpanScorer((TermSpans) query.getSpans(reader), this,
+ return new PayloadTermSpanScorer((TermSpans) query.getSpans(reader), this,
similarity, reader.norms(query.getField()));
}
Modified: lucene/java/trunk/src/java/org/apache/lucene/search/payloads/PayloadFunction.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/search/payloads/PayloadFunction.java?rev=806894&r1=806893&r2=806894&view=diff
==============================================================================
--- lucene/java/trunk/src/java/org/apache/lucene/search/payloads/PayloadFunction.java (original)
+++ lucene/java/trunk/src/java/org/apache/lucene/search/payloads/PayloadFunction.java Sat Aug 22 21:24:27 2009
@@ -20,10 +20,10 @@
/**
- * An abstract class that defines a way for Boosting*Query instances
+ * An abstract class that defines a way for Payload*Query instances
* to transform the cumulative effects of payload scores for a document.
*
- * @see org.apache.lucene.search.payloads.BoostingFunctionTermQuery for more information
+ * @see org.apache.lucene.search.payloads.PayloadTermQuery for more information
*
* <p/>
* This class and its derivations are experimental and subject to change
Copied: lucene/java/trunk/src/java/org/apache/lucene/search/payloads/PayloadNearQuery.java (from r806885, lucene/java/trunk/src/java/org/apache/lucene/search/payloads/BoostingNearQuery.java)
URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/search/payloads/PayloadNearQuery.java?p2=lucene/java/trunk/src/java/org/apache/lucene/search/payloads/PayloadNearQuery.java&p1=lucene/java/trunk/src/java/org/apache/lucene/search/payloads/BoostingNearQuery.java&r1=806885&r2=806894&rev=806894&view=diff
==============================================================================
--- lucene/java/trunk/src/java/org/apache/lucene/search/payloads/BoostingNearQuery.java (original)
+++ lucene/java/trunk/src/java/org/apache/lucene/search/payloads/PayloadNearQuery.java Sat Aug 22 21:24:27 2009
@@ -1,4 +1,5 @@
package org.apache.lucene.search.payloads;
+
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -36,37 +37,39 @@
import java.util.Iterator;
/**
- * This class is very similar to {@link org.apache.lucene.search.spans.SpanNearQuery} except
- * that it factors in the value of the payloads located at each of the positions where the
+ * This class is very similar to
+ * {@link org.apache.lucene.search.spans.SpanNearQuery} except that it factors
+ * in the value of the payloads located at each of the positions where the
* {@link org.apache.lucene.search.spans.TermSpans} occurs.
* <p/>
- * In order to take advantage of this, you must override {@link org.apache.lucene.search.Similarity#scorePayload(String, byte[],int,int)}
+ * In order to take advantage of this, you must override
+ * {@link org.apache.lucene.search.Similarity#scorePayload(String, byte[],int,int)}
* which returns 1 by default.
* <p/>
* Payload scores are aggregated using a pluggable {@link PayloadFunction}.
- *
- * @see org.apache.lucene.search.Similarity#scorePayload(String, byte[], int, int)
+ *
+ * @see org.apache.lucene.search.Similarity#scorePayload(String, byte[], int,
+ * int)
*/
-
-public class BoostingNearQuery extends SpanNearQuery implements PayloadQuery {
+public class PayloadNearQuery extends SpanNearQuery {
protected String fieldName;
protected PayloadFunction function;
- public BoostingNearQuery(SpanQuery[] clauses, int slop, boolean inOrder) {
+ public PayloadNearQuery(SpanQuery[] clauses, int slop, boolean inOrder) {
this(clauses, slop, inOrder, new AveragePayloadFunction());
}
- public BoostingNearQuery(SpanQuery[] clauses, int slop, boolean inOrder, PayloadFunction function) {
+ public PayloadNearQuery(SpanQuery[] clauses, int slop, boolean inOrder,
+ PayloadFunction function) {
super(clauses, slop, inOrder);
fieldName = clauses[0].getField(); // all clauses must have same field
this.function = function;
}
-
public Weight createWeight(Searcher searcher) throws IOException {
- return new BoostingSpanWeight(this, searcher);
+ return new PayloadNearSpanWeight(this, searcher);
}
-
+
public Object clone() {
int sz = clauses.size();
SpanQuery[] newClauses = new SpanQuery[sz];
@@ -75,17 +78,18 @@
SpanQuery clause = (SpanQuery) clauses.get(i);
newClauses[i] = (SpanQuery) clause.clone();
}
- BoostingNearQuery boostingNearQuery = new BoostingNearQuery(newClauses, slop, inOrder);
+ PayloadNearQuery boostingNearQuery = new PayloadNearQuery(newClauses, slop,
+ inOrder);
boostingNearQuery.setBoost(getBoost());
return boostingNearQuery;
}
-
+
public String toString(String field) {
StringBuffer buffer = new StringBuffer();
- buffer.append("boostingNear([");
+ buffer.append("payloadNear([");
Iterator i = clauses.iterator();
while (i.hasNext()) {
- SpanQuery clause = (SpanQuery)i.next();
+ SpanQuery clause = (SpanQuery) i.next();
buffer.append(clause.toString(field));
if (i.hasNext()) {
buffer.append(", ");
@@ -99,8 +103,8 @@
buffer.append(ToStringUtils.boost(getBoost()));
return buffer.toString();
}
-
- //@Override
+
+ // @Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
@@ -109,7 +113,7 @@
return result;
}
- //@Override
+ // @Override
public boolean equals(Object obj) {
if (this == obj)
return true;
@@ -117,7 +121,7 @@
return false;
if (getClass() != obj.getClass())
return false;
- BoostingNearQuery other = (BoostingNearQuery) obj;
+ PayloadNearQuery other = (PayloadNearQuery) obj;
if (fieldName == null) {
if (other.fieldName != null)
return false;
@@ -131,33 +135,33 @@
return true;
}
- public class BoostingSpanWeight extends SpanWeight {
- public BoostingSpanWeight(SpanQuery query, Searcher searcher) throws IOException {
+ public class PayloadNearSpanWeight extends SpanWeight {
+ public PayloadNearSpanWeight(SpanQuery query, Searcher searcher)
+ throws IOException {
super(query, searcher);
}
public Scorer scorer(IndexReader reader) throws IOException {
- return new BoostingSpanScorer(query.getSpans(reader), this,
- similarity,
- reader.norms(query.getField()));
+ return new PayloadNearSpanScorer(query.getSpans(reader), this,
+ similarity, reader.norms(query.getField()));
}
- public Scorer scorer(IndexReader reader, boolean scoreDocsInOrder, boolean topScorer) throws IOException {
- return new BoostingSpanScorer(query.getSpans(reader), this,
- similarity,
- reader.norms(query.getField()));
+ public Scorer scorer(IndexReader reader, boolean scoreDocsInOrder,
+ boolean topScorer) throws IOException {
+ return new PayloadNearSpanScorer(query.getSpans(reader), this,
+ similarity, reader.norms(query.getField()));
}
}
- public class BoostingSpanScorer extends SpanScorer {
+ public class PayloadNearSpanScorer extends SpanScorer {
Spans spans;
-
+
protected float payloadScore;
private int payloadsSeen;
Similarity similarity = getSimilarity();
- protected BoostingSpanScorer(Spans spans, Weight weight, Similarity similarity, byte[] norms)
- throws IOException {
+ protected PayloadNearSpanScorer(Spans spans, Weight weight,
+ Similarity similarity, byte[] norms) throws IOException {
super(spans, weight, similarity, norms);
this.spans = spans;
}
@@ -167,12 +171,14 @@
for (int i = 0; i < subSpans.length; i++) {
if (subSpans[i] instanceof NearSpansOrdered) {
if (((NearSpansOrdered) subSpans[i]).isPayloadAvailable()) {
- processPayloads(((NearSpansOrdered) subSpans[i]).getPayload(), subSpans[i].start(), subSpans[i].end());
+ processPayloads(((NearSpansOrdered) subSpans[i]).getPayload(),
+ subSpans[i].start(), subSpans[i].end());
}
getPayloads(((NearSpansOrdered) subSpans[i]).getSubSpans());
} else if (subSpans[i] instanceof NearSpansUnordered) {
if (((NearSpansUnordered) subSpans[i]).isPayloadAvailable()) {
- processPayloads(((NearSpansUnordered) subSpans[i]).getPayload(), subSpans[i].start(), subSpans[i].end());
+ processPayloads(((NearSpansUnordered) subSpans[i]).getPayload(),
+ subSpans[i].start(), subSpans[i].end());
}
getPayloads(((NearSpansUnordered) subSpans[i]).getSubSpans());
}
@@ -180,19 +186,21 @@
}
/**
- * By default, uses the {@link PayloadFunction} to score the payloads, but can be overridden to do other things.
- *
+ * By default, uses the {@link PayloadFunction} to score the payloads, but
+ * can be overridden to do other things.
+ *
* @param payLoads The payloads
* @param start The start position of the span being scored
* @param end The end position of the span being scored
- *
+ *
* @see Spans
*/
protected void processPayloads(Collection payLoads, int start, int end) {
for (Iterator iterator = payLoads.iterator(); iterator.hasNext();) {
byte[] thePayload = (byte[]) iterator.next();
- payloadScore = function.currentScore(doc, fieldName, start, end, payloadsSeen, payloadScore,
- similarity.scorePayload(doc, fieldName, spans.start(), spans.end(), thePayload, 0, thePayload.length));
+ payloadScore = function.currentScore(doc, fieldName, start, end,
+ payloadsSeen, payloadScore, similarity.scorePayload(doc, fieldName,
+ spans.start(), spans.end(), thePayload, 0, thePayload.length));
++payloadsSeen;
}
}
@@ -209,7 +217,8 @@
public float score() throws IOException {
- return super.score() * function.docScore(doc, fieldName, payloadsSeen, payloadScore);
+ return super.score()
+ * function.docScore(doc, fieldName, payloadsSeen, payloadScore);
}
public Explanation explain(int doc) throws IOException {
@@ -218,7 +227,8 @@
result.addDetail(nonPayloadExpl);
Explanation payloadBoost = new Explanation();
result.addDetail(payloadBoost);
- float avgPayloadScore = (payloadsSeen > 0 ? (payloadScore / payloadsSeen) : 1);
+ float avgPayloadScore = (payloadsSeen > 0 ? (payloadScore / payloadsSeen)
+ : 1);
payloadBoost.setValue(avgPayloadScore);
payloadBoost.setDescription("scorePayload(...)");
result.setValue(nonPayloadExpl.getValue() * avgPayloadScore);
@@ -226,5 +236,5 @@
return result;
}
}
-
+
}
Copied: lucene/java/trunk/src/java/org/apache/lucene/search/payloads/PayloadTermQuery.java (from r806885, lucene/java/trunk/src/java/org/apache/lucene/search/payloads/BoostingFunctionTermQuery.java)
URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/search/payloads/PayloadTermQuery.java?p2=lucene/java/trunk/src/java/org/apache/lucene/search/payloads/PayloadTermQuery.java&p1=lucene/java/trunk/src/java/org/apache/lucene/search/payloads/BoostingFunctionTermQuery.java&r1=806885&r2=806894&rev=806894&view=diff
==============================================================================
--- lucene/java/trunk/src/java/org/apache/lucene/search/payloads/BoostingFunctionTermQuery.java (original)
+++ lucene/java/trunk/src/java/org/apache/lucene/search/payloads/PayloadTermQuery.java Sat Aug 22 21:24:27 2009
@@ -1,4 +1,5 @@
package org.apache.lucene.search.payloads;
+
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -33,9 +34,10 @@
import java.io.IOException;
/**
- * This class is very similar to {@link org.apache.lucene.search.spans.SpanTermQuery}
- * except that it factors in the value of the payload located at each of the positions
- * where the {@link org.apache.lucene.index.Term} occurs.
+ * This class is very similar to
+ * {@link org.apache.lucene.search.spans.SpanTermQuery} except that it factors
+ * in the value of the payload located at each of the positions where the
+ * {@link org.apache.lucene.index.Term} occurs.
* <p>
* In order to take advantage of this, you must override
* {@link org.apache.lucene.search.Similarity#scorePayload(String, byte[],int,int)}
@@ -43,46 +45,47 @@
* <p>
* Payload scores are aggregated using a pluggable {@link PayloadFunction}.
**/
-public class BoostingFunctionTermQuery extends SpanTermQuery implements PayloadQuery{
+public class PayloadTermQuery extends SpanTermQuery {
protected PayloadFunction function;
private boolean includeSpanScore;
- public BoostingFunctionTermQuery(Term term, PayloadFunction function) {
+ public PayloadTermQuery(Term term, PayloadFunction function) {
this(term, function, true);
}
- public BoostingFunctionTermQuery(Term term, PayloadFunction function, boolean includeSpanScore) {
+ public PayloadTermQuery(Term term, PayloadFunction function,
+ boolean includeSpanScore) {
super(term);
this.function = function;
this.includeSpanScore = includeSpanScore;
}
-
-
public Weight createWeight(Searcher searcher) throws IOException {
- return new BoostingFunctionTermWeight(this, searcher);
+ return new PayloadTermWeight(this, searcher);
}
- protected class BoostingFunctionTermWeight extends SpanWeight {
+ protected class PayloadTermWeight extends SpanWeight {
- public BoostingFunctionTermWeight(BoostingFunctionTermQuery query, Searcher searcher) throws IOException {
+ public PayloadTermWeight(PayloadTermQuery query, Searcher searcher)
+ throws IOException {
super(query, searcher);
}
- public Scorer scorer(IndexReader reader, boolean scoreDocsInOrder, boolean topScorer) throws IOException {
- return new BoostingFunctionSpanScorer((TermSpans) query.getSpans(reader), this,
- similarity, reader.norms(query.getField()));
+ public Scorer scorer(IndexReader reader, boolean scoreDocsInOrder,
+ boolean topScorer) throws IOException {
+ return new PayloadTermSpanScorer((TermSpans) query.getSpans(reader),
+ this, similarity, reader.norms(query.getField()));
}
- protected class BoostingFunctionSpanScorer extends SpanScorer {
- //TODO: is this the best way to allocate this?
+ protected class PayloadTermSpanScorer extends SpanScorer {
+ // TODO: is this the best way to allocate this?
protected byte[] payload = new byte[256];
protected TermPositions positions;
protected float payloadScore;
protected int payloadsSeen;
- public BoostingFunctionSpanScorer(TermSpans spans, Weight weight, Similarity similarity,
- byte[] norms) throws IOException {
+ public PayloadTermSpanScorer(TermSpans spans, Weight weight,
+ Similarity similarity, byte[] norms) throws IOException {
super(spans, weight, similarity, norms);
positions = spans.getPositions();
}
@@ -102,73 +105,79 @@
freq += similarity1.sloppyFreq(matchLength);
processPayload(similarity1);
- more = spans.next();//this moves positions to the next match in this document
+ more = spans.next();// this moves positions to the next match in this
+ // document
}
return more || (freq != 0);
}
-
protected void processPayload(Similarity similarity) throws IOException {
if (positions.isPayloadAvailable()) {
payload = positions.getPayload(payload, 0);
- payloadScore = function.currentScore(doc, term.field(), spans.start(), spans.end(), payloadsSeen, payloadScore,
- similarity.scorePayload(doc, term.field(), spans.start(), spans.end(), payload, 0, positions.getPayloadLength()));
+ payloadScore = function.currentScore(doc, term.field(),
+ spans.start(), spans.end(), payloadsSeen, payloadScore,
+ similarity.scorePayload(doc, term.field(), spans.start(), spans
+ .end(), payload, 0, positions.getPayloadLength()));
payloadsSeen++;
} else {
- //zero out the payload?
+ // zero out the payload?
}
}
/**
- *
+ *
* @return {@link #getSpanScore()} * {@link #getPayloadScore()}
* @throws IOException
*/
public float score() throws IOException {
- return includeSpanScore ? getSpanScore() * getPayloadScore() : getPayloadScore();
+ return includeSpanScore ? getSpanScore() * getPayloadScore()
+ : getPayloadScore();
}
/**
* Returns the SpanScorer score only.
* <p/>
* Should not be overriden without good cause!
- *
+ *
* @return the score for just the Span part w/o the payload
* @throws IOException
- *
+ *
* @see #score()
*/
- protected float getSpanScore() throws IOException{
+ protected float getSpanScore() throws IOException {
return super.score();
}
/**
* The score for the payload
- * @return The score, as calculated by {@link PayloadFunction#docScore(int, String, int, float)}
+ *
+ * @return The score, as calculated by
+ * {@link PayloadFunction#docScore(int, String, int, float)}
*/
protected float getPayloadScore() {
return function.docScore(doc, term.field(), payloadsSeen, payloadScore);
}
-
public Explanation explain(final int doc) throws IOException {
ComplexExplanation result = new ComplexExplanation();
Explanation nonPayloadExpl = super.explain(doc);
result.addDetail(nonPayloadExpl);
- //QUESTION: Is there a way to avoid this skipTo call? We need to know whether to load the payload or not
+ // QUESTION: Is there a way to avoid this skipTo call? We need to know
+ // whether to load the payload or not
Explanation payloadBoost = new Explanation();
result.addDetail(payloadBoost);
-
float payloadScore = getPayloadScore();
payloadBoost.setValue(payloadScore);
- //GSI: I suppose we could toString the payload, but I don't think that would be a good idea
+ // GSI: I suppose we could toString the payload, but I don't think that
+ // would be a good idea
payloadBoost.setDescription("scorePayload(...)");
result.setValue(nonPayloadExpl.getValue() * payloadScore);
result.setDescription("btq, product of:");
- result.setMatch(nonPayloadExpl.getValue()==0 ? Boolean.FALSE : Boolean.TRUE); // LUCENE-1303
+ result.setMatch(nonPayloadExpl.getValue() == 0 ? Boolean.FALSE
+ : Boolean.TRUE); // LUCENE-1303
return result;
}
@@ -190,7 +199,7 @@
return false;
if (getClass() != obj.getClass())
return false;
- BoostingFunctionTermQuery other = (BoostingFunctionTermQuery) obj;
+ PayloadTermQuery other = (PayloadTermQuery) obj;
if (function == null) {
if (other.function != null)
return false;
@@ -201,5 +210,4 @@
return true;
}
-
}
Modified: lucene/java/trunk/src/java/org/apache/lucene/search/payloads/package.html
URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/search/payloads/package.html?rev=806894&r1=806893&r2=806894&view=diff
==============================================================================
--- lucene/java/trunk/src/java/org/apache/lucene/search/payloads/package.html (original)
+++ lucene/java/trunk/src/java/org/apache/lucene/search/payloads/package.html Sat Aug 22 21:24:27 2009
@@ -26,8 +26,8 @@
</DIV>
<div>
<ol>
- <li><a href="./BoostingFunctionTermQuery.html">BoostingFunctionTermQuery</a> -- Boost a term's score based on the value of the payload located at that term.</li>
- <li><a href="./BoostingNearQuery.html">BoostingNearQuery</a> -- A <a href="SpanNearQuery.html">SpanNearQuery</a> that factors in the value of the payloads located
+ <li><a href="./PayloadTermQuery.html">PayloadTermQuery</a> -- Boost a term's score based on the value of the payload located at that term.</li>
+ <li><a href="./PayloadNearQuery.html">PayloadNearQuery</a> -- A <a href="SpanNearQuery.html">SpanNearQuery</a> that factors in the value of the payloads located
at each of the positions where the spans occur.</li>
</ol>
</div>
Copied: lucene/java/trunk/src/test/org/apache/lucene/search/payloads/TestPayloadNearQuery.java (from r806885, lucene/java/trunk/src/test/org/apache/lucene/search/payloads/TestBoostingNearQuery.java)
URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/test/org/apache/lucene/search/payloads/TestPayloadNearQuery.java?p2=lucene/java/trunk/src/test/org/apache/lucene/search/payloads/TestPayloadNearQuery.java&p1=lucene/java/trunk/src/test/org/apache/lucene/search/payloads/TestBoostingNearQuery.java&r1=806885&r2=806894&rev=806894&view=diff
==============================================================================
--- lucene/java/trunk/src/test/org/apache/lucene/search/payloads/TestBoostingNearQuery.java (original)
+++ lucene/java/trunk/src/test/org/apache/lucene/search/payloads/TestPayloadNearQuery.java Sat Aug 22 21:24:27 2009
@@ -42,13 +42,13 @@
import org.apache.lucene.util.LuceneTestCase;
-public class TestBoostingNearQuery extends LuceneTestCase {
+public class TestPayloadNearQuery extends LuceneTestCase {
private IndexSearcher searcher;
private BoostingSimilarity similarity = new BoostingSimilarity();
private byte[] payload2 = new byte[]{2};
private byte[] payload4 = new byte[]{4};
- public TestBoostingNearQuery(String s) {
+ public TestPayloadNearQuery(String s) {
super(s);
}
@@ -86,14 +86,14 @@
}
}
- private BoostingNearQuery newPhraseQuery (String fieldName, String phrase, boolean inOrder) {
+ private PayloadNearQuery newPhraseQuery (String fieldName, String phrase, boolean inOrder) {
int n;
String[] words = phrase.split("[\\s]+");
SpanQuery clauses[] = new SpanQuery[words.length];
for (int i=0;i<clauses.length;i++) {
- clauses[i] = new BoostingTermQuery(new Term(fieldName, words[i]));
+ clauses[i] = new PayloadTermQuery(new Term(fieldName, words[i]), new AveragePayloadFunction());
}
- return new BoostingNearQuery(clauses, 0, inOrder);
+ return new PayloadNearQuery(clauses, 0, inOrder);
}
protected void setUp() throws Exception {
@@ -117,7 +117,7 @@
}
public void test() throws IOException {
- BoostingNearQuery query;
+ PayloadNearQuery query;
TopDocs hits;
query = newPhraseQuery("field", "twenty two", true);
@@ -149,7 +149,7 @@
}
public void testLongerSpan() throws IOException {
- BoostingNearQuery query;
+ PayloadNearQuery query;
TopDocs hits;
query = newPhraseQuery("field", "nine hundred ninety nine", true);
hits = searcher.search(query, null, 100);
@@ -163,7 +163,7 @@
}
public void testComplexNested() throws IOException {
- BoostingNearQuery query;
+ PayloadNearQuery query;
TopDocs hits;
// combine ordered and unordered spans with some nesting to make sure all payloads are counted
@@ -172,8 +172,8 @@
SpanQuery q2 = newPhraseQuery("field", "ninety nine", true);
SpanQuery q3 = newPhraseQuery("field", "nine ninety", false);
SpanQuery q4 = newPhraseQuery("field", "hundred nine", false);
- SpanQuery[]clauses = new SpanQuery[] {new BoostingNearQuery(new SpanQuery[] {q1,q2}, 0, true), new BoostingNearQuery(new SpanQuery[] {q3,q4}, 0, false)};
- query = new BoostingNearQuery(clauses, 0, false);
+ SpanQuery[]clauses = new SpanQuery[] {new PayloadNearQuery(new SpanQuery[] {q1,q2}, 0, true), new PayloadNearQuery(new SpanQuery[] {q3,q4}, 0, false)};
+ query = new PayloadNearQuery(clauses, 0, false);
hits = searcher.search(query, null, 100);
assertTrue("hits is null and it shouldn't be", hits != null);
// should be only 1 hit - doc 999
Copied: lucene/java/trunk/src/test/org/apache/lucene/search/payloads/TestPayloadTermQuery.java (from r806885, lucene/java/trunk/src/test/org/apache/lucene/search/payloads/BoostingFunctionTermQueryTest.java)
URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/test/org/apache/lucene/search/payloads/TestPayloadTermQuery.java?p2=lucene/java/trunk/src/test/org/apache/lucene/search/payloads/TestPayloadTermQuery.java&p1=lucene/java/trunk/src/test/org/apache/lucene/search/payloads/BoostingFunctionTermQueryTest.java&r1=806885&r2=806894&rev=806894&view=diff
==============================================================================
--- lucene/java/trunk/src/test/org/apache/lucene/search/payloads/BoostingFunctionTermQueryTest.java (original)
+++ lucene/java/trunk/src/test/org/apache/lucene/search/payloads/TestPayloadTermQuery.java Sat Aug 22 21:24:27 2009
@@ -49,7 +49,7 @@
*
*
**/
-public class BoostingFunctionTermQueryTest extends LuceneTestCase {
+public class TestPayloadTermQuery extends LuceneTestCase {
private IndexSearcher searcher;
private BoostingSimilarity similarity = new BoostingSimilarity();
private byte[] payloadField = new byte[]{1};
@@ -57,7 +57,7 @@
private byte[] payloadMultiField2 = new byte[]{4};
protected RAMDirectory directory;
- public BoostingFunctionTermQueryTest(String s) {
+ public TestPayloadTermQuery(String s) {
super(s);
}
@@ -128,7 +128,7 @@
}
public void test() throws IOException {
- BoostingFunctionTermQuery query = new BoostingFunctionTermQuery(new Term("field", "seventy"),
+ PayloadTermQuery query = new PayloadTermQuery(new Term("field", "seventy"),
new MaxPayloadFunction());
TopDocs hits = searcher.search(query, null, 100);
assertTrue("hits is null and it shouldn't be", hits != null);
@@ -155,7 +155,7 @@
}
public void testQuery() {
- BoostingFunctionTermQuery boostingFuncTermQuery = new BoostingFunctionTermQuery(new Term(PayloadHelper.MULTI_FIELD, "seventy"),
+ PayloadTermQuery boostingFuncTermQuery = new PayloadTermQuery(new Term(PayloadHelper.MULTI_FIELD, "seventy"),
new MaxPayloadFunction());
QueryUtils.check(boostingFuncTermQuery);
@@ -163,14 +163,14 @@
assertTrue(boostingFuncTermQuery.equals(spanTermQuery) == spanTermQuery.equals(boostingFuncTermQuery));
- BoostingFunctionTermQuery boostingFuncTermQuery2 = new BoostingFunctionTermQuery(new Term(PayloadHelper.MULTI_FIELD, "seventy"),
+ PayloadTermQuery boostingFuncTermQuery2 = new PayloadTermQuery(new Term(PayloadHelper.MULTI_FIELD, "seventy"),
new AveragePayloadFunction());
QueryUtils.checkUnequal(boostingFuncTermQuery, boostingFuncTermQuery2);
}
public void testMultipleMatchesPerDoc() throws Exception {
- BoostingFunctionTermQuery query = new BoostingFunctionTermQuery(new Term(PayloadHelper.MULTI_FIELD, "seventy"),
+ PayloadTermQuery query = new PayloadTermQuery(new Term(PayloadHelper.MULTI_FIELD, "seventy"),
new MaxPayloadFunction());
TopDocs hits = searcher.search(query, null, 100);
assertTrue("hits is null and it shouldn't be", hits != null);
@@ -209,7 +209,7 @@
//Set includeSpanScore to false, in which case just the payload score comes through.
public void testIgnoreSpanScorer() throws Exception {
- BoostingFunctionTermQuery query = new BoostingFunctionTermQuery(new Term(PayloadHelper.MULTI_FIELD, "seventy"),
+ PayloadTermQuery query = new PayloadTermQuery(new Term(PayloadHelper.MULTI_FIELD, "seventy"),
new MaxPayloadFunction(), false);
IndexSearcher theSearcher = new IndexSearcher(directory, true);
@@ -249,7 +249,7 @@
}
public void testNoMatch() throws Exception {
- BoostingFunctionTermQuery query = new BoostingFunctionTermQuery(new Term(PayloadHelper.FIELD, "junk"),
+ PayloadTermQuery query = new PayloadTermQuery(new Term(PayloadHelper.FIELD, "junk"),
new MaxPayloadFunction());
TopDocs hits = searcher.search(query, null, 100);
assertTrue("hits is null and it shouldn't be", hits != null);
@@ -258,9 +258,9 @@
}
public void testNoPayload() throws Exception {
- BoostingFunctionTermQuery q1 = new BoostingFunctionTermQuery(new Term(PayloadHelper.NO_PAYLOAD_FIELD, "zero"),
+ PayloadTermQuery q1 = new PayloadTermQuery(new Term(PayloadHelper.NO_PAYLOAD_FIELD, "zero"),
new MaxPayloadFunction());
- BoostingFunctionTermQuery q2 = new BoostingFunctionTermQuery(new Term(PayloadHelper.NO_PAYLOAD_FIELD, "foo"),
+ PayloadTermQuery q2 = new PayloadTermQuery(new Term(PayloadHelper.NO_PAYLOAD_FIELD, "foo"),
new MaxPayloadFunction());
BooleanClause c1 = new BooleanClause(q1, BooleanClause.Occur.MUST);
BooleanClause c2 = new BooleanClause(q2, BooleanClause.Occur.MUST_NOT);