mirror of https://github.com/apache/lucene.git
BugFix: field boosts were being ignored and doc boosts applied to fields rather than the doc
(testcase + fix) git-svn-id: https://svn.apache.org/repos/asf/incubator/solr/trunk@471059 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
a0239f9f42
commit
2c71186808
|
@ -112,6 +112,7 @@ Bug Fixes
|
|||
7. WordDelimiterFilter can throw exceptions if configured with both
|
||||
generate and catenate off. (Mike Klaas via yonik, SOLR-34)
|
||||
8. Escape '>' in XML output (because ]]> is illegal in CharData)
|
||||
9. field boosts weren't being applied and doc boosts were being applied to fields (klaas)
|
||||
|
||||
Other Changes
|
||||
1. Upgrade to Lucene 2.0 nightly build 2006-06-22, lucene SVN revision 416224,
|
||||
|
|
|
@ -864,6 +864,7 @@ public final class SolrCore {
|
|||
String attrVal = xpp.getAttributeValue(i);
|
||||
if ("boost".equals(attrName)) {
|
||||
docBoost = Float.parseFloat(attrVal);
|
||||
builder.setBoost(docBoost);
|
||||
} else {
|
||||
log.warning("Unknown attribute doc/@" + attrName);
|
||||
}
|
||||
|
@ -911,8 +912,8 @@ public final class SolrCore {
|
|||
// need this line for isNull???
|
||||
// Don't add fields marked as null (for now at least)
|
||||
if (!isNull) {
|
||||
if (docBoost != 1.0f) {
|
||||
builder.addField(name,val,docBoost);
|
||||
if (boost != 1.0f) {
|
||||
builder.addField(name,val,boost);
|
||||
} else {
|
||||
builder.addField(name,val);
|
||||
}
|
||||
|
|
|
@ -157,6 +157,43 @@ public class BasicFunctionalityTest extends AbstractSolrTestCase {
|
|||
|
||||
}
|
||||
|
||||
public void testDocBoost() throws Exception {
|
||||
String res = h.update("<add>" + "<doc><field name=\"id\">1</field>"+
|
||||
"<field name=\"text\">hello</field></doc>" +
|
||||
"<doc boost=\"2.0\"><field name=\"id\">2</field>" +
|
||||
"<field name=\"text\">hello</field></doc>" +
|
||||
"</add>");
|
||||
|
||||
assertEquals("<result status=\"0\"></result><result status=\"0\"></result>", res);
|
||||
assertU("<commit/>");
|
||||
assertQ(req("text:hello")
|
||||
,"//*[@numFound='2']"
|
||||
);
|
||||
String resp = h.query(lrf.makeRequest("q", "text:hello", "debugQuery", "true"));
|
||||
//System.out.println(resp);
|
||||
// second doc ranked first
|
||||
assertTrue( resp.indexOf("id=2") < resp.indexOf("id=1") );
|
||||
}
|
||||
|
||||
public void testFieldBoost() throws Exception {
|
||||
String res = h.update("<add>" + "<doc><field name=\"id\">1</field>"+
|
||||
"<field name=\"text\">hello</field></doc>" +
|
||||
"<doc><field name=\"id\">2</field>" +
|
||||
"<field boost=\"2.0\" name=\"text\">hello</field></doc>" +
|
||||
"</add>");
|
||||
|
||||
assertEquals("<result status=\"0\"></result><result status=\"0\"></result>", res);
|
||||
assertU("<commit/>");
|
||||
assertQ(req("text:hello"),
|
||||
"//*[@numFound='2']"
|
||||
);
|
||||
String resp = h.query(lrf.makeRequest("q", "text:hello", "debugQuery", "true"));
|
||||
//System.out.println(resp);
|
||||
// second doc ranked first
|
||||
assertTrue( resp.indexOf("id=2") < resp.indexOf("id=1") );
|
||||
}
|
||||
|
||||
|
||||
public void testXMLWriter() throws Exception {
|
||||
|
||||
SolrQueryResponse rsp = new SolrQueryResponse();
|
||||
|
|
Loading…
Reference in New Issue