lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Uwe Schindler" <...@thetaphi.de>
Subject RE: Rank results only on some fields
Date Sat, 31 Jul 2010 08:59:50 GMT
Here some example code, the method is getFieldQuery() (Lucene 2.9 or 3.0 or
following, don't use that approach before, because QueryWrapperFilter is not
effective before 2.9 for that):

@Override
protected Query getFieldQuery(String field, String queryText)  throws
ParseException {
	Query q = super.getFieldQuery(field,queryText);
	if (!"TITLE".equals(field))
		q = new ConstantScoreQuery(new QueryWrapperFilter(q));
	return q;
}

I hope that explains itself. You may look at other Query type factories in
QP that produce scoring queries and wrap them similar. But e.g. WildCard and
RangeQueries are constant score. Phrases are also handled by this method.
Only the slop setting may not work correctly after this (look at the
instanceof checks in getFieldQuery(..., slop)).

Uwe

-----
Uwe Schindler
H.-H.-Meier-Allee 63, D-28213 Bremen
http://www.thetaphi.de
eMail: uwe@thetaphi.de


> -----Original Message-----
> From: Uwe Schindler [mailto:uwe@thetaphi.de]
> Sent: Saturday, July 31, 2010 10:19 AM
> To: java-user@lucene.apache.org
> Subject: RE: Rank results only on some fields
> 
> You can construct the query using a customized query parser that wraps all
> queries not with the suggested field name using a "new
> ConstantScoreQuery(new QueryWrapperFilter(originalCreatedQuery))".
> Override
> newFieldQuery() to do that and pass the super call to this ctor chain.
> 
> Uwe
> 
> -----
> Uwe Schindler
> H.-H.-Meier-Allee 63, D-28213 Bremen
> http://www.thetaphi.de
> eMail: uwe@thetaphi.de
> 
> 
> > -----Original Message-----
> > From: Philippe [mailto:mailer.thomas@gmail.com]
> > Sent: Saturday, July 31, 2010 10:04 AM
> > To: java-user@lucene.apache.org
> > Subject: Rank results only on some fields
> >
> > Hi,
> >
> > I want to rank my results only on parts of my query.  E.g my query is
> > "TITLE:Lucene AND AUTHOR:Manning". After this query standard lucene
> > ranking for both fields take place.
> >
> > However, is it possible to query the index using the full query and
> > rank results only according to the "TITLE"-Field?
> >
> > Regards,
> >      Philippe
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
> > For additional commands, e-mail: java-user-help@lucene.apache.org
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
> For additional commands, e-mail: java-user-help@lucene.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org


Mime
View raw message