Michael, QueryFilter is certainly the way to go for fields that don't require scoring. Thanks for that.
Everyone, Regarding making modifications to Lucene core and/or extending Lucene's classes, what's the best practice for managing the changes? I keep a Lucene repository under TortoiseSVN pointing to https://svn.apache.org/repos/asf/incubator/lucene.net/tags/Lucene.Net_2_4_0. Then every time I make a core change or extend a Lucene class, I copy the files involved into a separate folder structure which is part of another SVN repository. That way I can source control my changes. The process is a bit cumbersome. Is there a better way? Regards, Artem On Fri, Dec 11, 2009 at 5:09 AM, Michael Garski <mgar...@myspace-inc.com>wrote: > Artem, > > I've made modifications to the internals of Lucene.Net to achieve > modifications to scoring, specifically in being able to manually specify the > length norm for a field, which allowed me to retain positional information > while injecting multi-term synonyms, so I wouldn't worry too much about > making a special build for yourself with a few changes. > > Would using a QueryFilter in conjunction with a query work? The > QueryFilter would be used on fields that scoring information was not > necessary while the other fields would be queried with the specific query > you need. > > Michael > > -----Original Message----- > From: Artem Chereisky [mailto:a.cherei...@gmail.com] > Sent: Thursday, December 10, 2009 1:40 AM > To: lucene-net-user@incubator.apache.org > Cc: <lucene-net-user@incubator.apache.org> > Subject: Re: idf on per-field basis > > Michael, thank you. > > Query filter only solves half of my problem. Unfortunately I do need > to have a proper score for some fields. > > I ended up extending Term class (I removed sealed attribute which is a > bad thing). The new myTerm class has one boolean member, omitIdf. > Then, when I compile my queries, I use myTerm with omitIdf set to > true, for some fields. Then I extended Similarity cladd and I cast > Term passes into Idf method to myTerm and only calculate Idf if > omitIdf is true. Seems to work. > > I don't like the solution but that's the best I could do today. > > Any thoughts? > > Regards, > Artem > > > On 10/12/2009, at 15:51, Michael Garski <mgar...@myspace-inc.com> wrote: > > > Artem, > > > > Do you need any scoring information at all on that field? How about > > using a QueryFilter for those fields? > > > > Michael > > > > > > -----Original Message----- > > From: Artem Chereisky [mailto:a.cherei...@gmail.com] > > Sent: Wed 12/9/2009 4:53 PM > > To: lucene-net-user@incubator.apache.org; > lucene-net-develo...@incubator.apache.org > > Subject: idf on per-field basis > > > > Hi, > > > > I came across a situation when my scores are adversely affected by > > the IDF > > component. Let me explain. > > > > My index documents contain a number of fields, for some, TF and IDF > > are > > important and need to be taken into account, for others niether TF > > nor IDF > > should apply. I dealt with TF by omiting norms during indexing but I > > can't > > find a way to calculate IDF for certain fields only. > > > > The formula for IDF is defined in Similarity. I have my own > > implementation > > of Similarity where I can set it to 1 or use the default > > implementation. > > mySearcher.SetSimilarity is where I tell Lucene which similarity > > instance to > > use, but that's global, so it applies to all fields in the index. > > > > So, here's my question. Is there a way to calculate IDF on per-field > > basis? > > > > Regards, > > Art > > > > > >