[ https://issues.apache.org/jira/browse/LUCENE-1155?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12630765#action_12630765 ]
Karl Wettin commented on LUCENE-1155: ------------------------------------- bq. How is that any different than marking the 70% as having a boost ranging between 1/5 = 0.2 and 5/5 = 1 whereby no patch is needed? You still have the same 30% null payloads There would be absolutly no difference to the end result. I want to turn this question around and ask why you don't normalize all boosts at query time to top index 1f and then use negative boost for everything else? It's about gutfeelings. Nulling out the payloads could be gained by dividing the weight by 5 at creation time (due to lots of reasons this was not a good chooise), by a dividing all weight by 5 in a filter in the end of the chain, or by introducing this patch. For me BoostingTermQuery felt like the most obvious place to handle this stuff, and it still does. > BoostingTermQuery#defaultTermBoost > ---------------------------------- > > Key: LUCENE-1155 > URL: https://issues.apache.org/jira/browse/LUCENE-1155 > Project: Lucene - Java > Issue Type: Improvement > Components: Search > Reporter: Karl Wettin > Priority: Trivial > > This patch allows a null payload to mean something different than 1f. > (I have this use case where 99% of my tokens share the same rather large > token position payload boost.) > {code} > Index: src/java/org/apache/lucene/search/payloads/BoostingTermQuery.java > =================================================================== > --- src/java/org/apache/lucene/search/payloads/BoostingTermQuery.java > (revision 615215) > +++ src/java/org/apache/lucene/search/payloads/BoostingTermQuery.java > (working copy) > @@ -41,11 +41,16 @@ > */ > public class BoostingTermQuery extends SpanTermQuery{ > > + private Float defaultTermBoost = null; > > public BoostingTermQuery(Term term) { > super(term); > } > > + public BoostingTermQuery(Term term, Float defaultTermBoost) { > + super(term); > + this.defaultTermBoost = defaultTermBoost; > + } > > protected Weight createWeight(Searcher searcher) throws IOException { > return new BoostingTermWeight(this, searcher); > @@ -107,7 +112,9 @@ > payload = positions.getPayload(payload, 0); > payloadScore += similarity.scorePayload(term.field(), payload, 0, > positions.getPayloadLength()); > payloadsSeen++; > - > + } else if (defaultTermBoost != null) { > + payloadScore += defaultTermBoost; > + payloadsSeen++; > } else { > //zero out the payload? > } > @@ -146,7 +153,14 @@ > > } > > + public Float getDefaultTermBoost() { > + return defaultTermBoost; > + } > > + public void setDefaultTermBoost(Float defaultTermBoost) { > + this.defaultTermBoost = defaultTermBoost; > + } > + > public boolean equals(Object o) { > if (!(o instanceof BoostingTermQuery)) > return false; > {code} -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]