Hi, Ah sorry, I misunderstood, you wanted to score the duplicate match lower! To achieve this, you have to change the coord function in your similarity/BooleanWeight used for this query.
Either way: If you want a group of terms that get only one score if at least one of the terms match (SQL IN), but not add them at all, DisjunctionMaxQuery is fine. I think this is what Benson asked for. ----- Uwe Schindler H.-H.-Meier-Allee 63, D-28213 Bremen http://www.thetaphi.de eMail: u...@thetaphi.de > -----Original Message----- > From: Uwe Schindler [mailto:u...@thetaphi.de] > Sent: Friday, April 20, 2012 8:16 AM > To: java-user@lucene.apache.org; david_murgatr...@hotmail.com > Subject: RE: DisjunctionMaxQuery and scoring > > Hi, > > I think > > BooleanQuery bq = new BooleanQuery(false); doesn't quite accomplish > > the desired "name IN (dick, rich)" scoring behavior. This is because > (name:dick | > > name:rich) with coord=false would score the 'document' "Dick Rich" > > higher than "Rich" because the former has two term matches and the > > latter only > one. > > In contrast, I think the desire is that one and only one of the terms > > in > the > > document match those in the BooleanQuery so that "Rich" would score > > higher than "Dick Rich", given document length normalization. It's > > almost like a > desire > > for BooleanQuery bq = new BooleanQuery(false); > > bq.set*Maximum*NumberShouldMatch(1); > > I that case DisjunctionMaxQuery is the way to go (it will only count the hit with > highest score and not add scores (coord or not coord doesn't matter here). > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org > For additional commands, e-mail: java-user-h...@lucene.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org For additional commands, e-mail: java-user-h...@lucene.apache.org