: I have a multivalued field that I would want to score individually for each
: value. Is there an easy way to do that?

Lucene-Java has a (somewhat new) feature called "Payloads" which allows 
for things like this built arround the idea that when indexing, any Token 
cn contain an arbitrary data payload which is persisted along with the 
TermPosition info in the index -- At query time, different types of 
queries can use/abuse that payload anyway they want.

Currently payload support in Solr is somewhat limited.  If you have a 
custom Analyzer or Tokenizer/TokenFilter that knows about Payloads, they 
will make it into the index, but you would need to write a custom 
Similiarty and QParserPlugin to take advantage of it (there's already a 
BoostingTermQuery in Lucene that you can leverage)

Payloads is a really powerful feature, but the fact that it can be used in 
*sooooo* many different ways is probably the biggest reasons why Solr 
doesn't have any features yet to make payloads easier to use just via 
configuration.

At the moment, the simplest mechanisms for achieving something like what 
you are describing that i know of are:
  1) repetitive values.  Add a value twice to make it counnt (roughly) 
     twice as much. (eliminating lengthNorm and customing your Similarity 
     is neccessary to make it worth exactly twice as much)
  2) differnet fields.  Partition the spectrum of "importance" for your 
     values into N buckets, make a field for each bucket, put the value in 
     the bucket that makes the most sense, and at query time query ofr 
     each bucket with a differnet query time boost.

: 2) the value of normField is persisted as a byte in the index and the
: precision loss hurts.

for a field like what you are describing, you'll probably want to 
omitNorms completley just to make sure docs with lots of values aren't 
penalized.



-Hoss

Reply via email to