Hello,

I am denormalizing a map of <string,float> into a single lucene document
by storing it as "key1|score1 key2|score2 ...". In Solr, I pull this in
using the following analyzer definition.

    <fieldtype name="payloads" stored="false" indexed="true"
        class="solr.TextField" >
      <analyzer>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.DelimitedPayloadTokenFilterFactory"
          delimiter="|" encoder="float"/>
      </analyzer>
    </fieldtype>

I have my own PayloadSimilarity which overrides scorePayload.

The index is created by POSTing Solr XML to Solr.

In Solr, I have a custom QParser that converts any query containing a
field of type payloads into a PayloadTermQuery instead of a TermQuery
(multiple sub-queries are combined using a BooleanQuery).

However, in Luke, when I put my custom PayloadSimilarity and a custom
PayloadAnalyzer (equivalent to the chain above) in the classpath and
enter the same field:value query and the results don't come back ordered
by the payload score. I do set the analyzer to my payload analyzer and
the similarity to my payload similarity.

I guess this is expected as there is no way (that I know of anyway) for
me to tell Luke that this is a PayloadTermQuery rather than a TermQuery.

So the question is - can I use some special syntax to indicate to Luke
that the query should be converted to a PayloadTermQuery? 

Don't think Luke can figure out based on the definition (in Luke I see
the field defined as ITS).

Thanks
Sujit



Reply via email to