On Jan 17, 2013, at 10:53 PM, Shawn Heisey wrote:

> On 1/17/2013 11:41 PM, Walter Underwood wrote:
>> As I understand it, the bq parameter is a full Lucene query, but only used 
>> for ranking, not for selection. This is the complement of fq.
>> 
>> You can use weighting:  provider:fred^8
>> 
>> This will be affected by idf, so providers with fewer matches will have 
>> higher weight than those with more matches. This is a bother, but the 
>> idf-free approach requires Solr 4.0.
> 
> I am doing my testing on Solr 4.1, so if you can give me the syntax for that, 
> I would appreciate it.  My production indexes are 3.5, but once we are 
> confident with the 4.1 dev system, we'll upgrade.
> 
> The provider field has omitTermFreqAndPositions="true" defined, but the 
> fields that typically get searched don't omit anything, so IDF probably still 
> applies in the aggregate.
> 
> On a related note, I have rather extreme length variation in my fields, so I 
> see quite a lot of weird results due to very short metadata.  Is there any 
> way to lessen the impact of lengthNorm without eliminating it entirely?  If 
> not, is there any way to eliminate lengthNorm without also disabling 
> index-time boosts?  At this moment I am not doing index-time boosting, but 
> business requirements may change that in the future.
> 
> Thanks,
> Shawn

I was experimenting with a boost function like this:

if(exists(query(provider:fred)), 5, 1)

That gives a constant boost if the term exists in the field, none if it does 
not. If you pass the provider in as a separate URL param, you could use 
parameter substitution.

if(exists(query(provider:$provider)), 5, 1)

For length norms, you could try a different similarity class or write your own, 
changing Similarity.computeNorm().

wunder
--
Walter Underwood
wun...@wunderwood.org



Reply via email to