You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by John Anonymous <or...@gmail.com> on 2017/12/13 20:15:48 UTC

PayloadScoreQuery always returns score of zero

The PayloadScoreQuery always returns a score of zero, regardless of
payloads.  The PayloadCheckQParser works fine, so I know that I am
successfully indexing the payloads.   Details below

*payload field that I am searching on:*
<field name="report" type="delimited_payloads_int"  indexed="true"
stored="true"
  multiValued="true" termVectors="true" termPositions="true"
termOffsets="true"
  omitNorms="true" termPayloads="true"/>

*definition of payload field type:*
<fieldType name="delimited_payloads_int" stored="false" indexed="true"
class="solr.TextField">
    <analyzer  type="index">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.DelimitedPayloadTokenFilterFactory"
encoder="integer" delimiter="¯"/>
        <filter class="solr.WordDelimiterGraphFilterFactory"
preserveOriginal="0" splitOnNumerics="0" types="wdftypes.txt"/>
        <filter class="solr.FlattenGraphFilterFactory"/>
        <filter class="solr.ASCIIFoldingFilterFactory" />
        <filter class="solr.StopFilterFactory" ignoreCase="true"
words="stopwords_en.txt"/>
    </analyzer>
    <analyzer type="query">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.WordDelimiterGraphFilterFactory"
preserveOriginal="0" splitOnNumerics="0" types="wdftypes.txt"/>
        <filter class="solr.ASCIIFoldingFilterFactory" />
        <filter class="solr.StopFilterFactory" ignoreCase="true"
words="stopwords_en.txt"/>
    </analyzer>
</fieldType>


*Adding some documents with payloads in my test:*assertU(adoc(
        "key", "1",
        "report", "apple¯0 apple¯0 apple¯0"
));
assertU(adoc(
        "key", "2",
        "report", "apple¯1 apple¯1 text¯1"
));


*query:*{!payload_score f=report v=apple func=sum}

*score (both documents have a score of zero):*
<lst name="explain">
    <str name="1">
0.0 = SumPayloadFunction.docScore()
</str>
    <str name="2">
0.0 = SumPayloadFunction.docScore()
</str>
  </lst>

I have tried using func=max as well, but it makes no difference.  Can
anyone help me with what I am missing here?
Thanks!
Johnathan

Re: PayloadScoreQuery always returns score of zero

Posted by Chris Hostetter <ho...@fucit.org>.
what does your full request, including the results block look like when 
you search on one of these queries with "fl=*,score" ?

I'm suspicios that perhaps the problem isn't the payload encoding, or the 
PayloadScoreQuery -- but perhaps it's simply a bug in the Explanation 
produced by those queries?

: Date: Wed, 13 Dec 2017 14:15:48 -0600
: From: John Anonymous <or...@gmail.com>
: Reply-To: solr-user@lucene.apache.org
: To: solr-user@lucene.apache.org
: Subject: PayloadScoreQuery always returns score of zero
: 
: The PayloadScoreQuery always returns a score of zero, regardless of
: payloads.  The PayloadCheckQParser works fine, so I know that I am
: successfully indexing the payloads.   Details below
: 
: *payload field that I am searching on:*
: <field name="report" type="delimited_payloads_int"  indexed="true"
: stored="true"
:   multiValued="true" termVectors="true" termPositions="true"
: termOffsets="true"
:   omitNorms="true" termPayloads="true"/>
: 
: *definition of payload field type:*
: <fieldType name="delimited_payloads_int" stored="false" indexed="true"
: class="solr.TextField">
:     <analyzer  type="index">
:         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
:         <filter class="solr.LowerCaseFilterFactory"/>
:         <filter class="solr.DelimitedPayloadTokenFilterFactory"
: encoder="integer" delimiter="¯"/>
:         <filter class="solr.WordDelimiterGraphFilterFactory"
: preserveOriginal="0" splitOnNumerics="0" types="wdftypes.txt"/>
:         <filter class="solr.FlattenGraphFilterFactory"/>
:         <filter class="solr.ASCIIFoldingFilterFactory" />
:         <filter class="solr.StopFilterFactory" ignoreCase="true"
: words="stopwords_en.txt"/>
:     </analyzer>
:     <analyzer type="query">
:         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
:         <filter class="solr.LowerCaseFilterFactory"/>
:         <filter class="solr.WordDelimiterGraphFilterFactory"
: preserveOriginal="0" splitOnNumerics="0" types="wdftypes.txt"/>
:         <filter class="solr.ASCIIFoldingFilterFactory" />
:         <filter class="solr.StopFilterFactory" ignoreCase="true"
: words="stopwords_en.txt"/>
:     </analyzer>
: </fieldType>
: 
: 
: *Adding some documents with payloads in my test:*assertU(adoc(
:         "key", "1",
:         "report", "apple¯0 apple¯0 apple¯0"
: ));
: assertU(adoc(
:         "key", "2",
:         "report", "apple¯1 apple¯1 text¯1"
: ));
: 
: 
: *query:*{!payload_score f=report v=apple func=sum}
: 
: *score (both documents have a score of zero):*
: <lst name="explain">
:     <str name="1">
: 0.0 = SumPayloadFunction.docScore()
: </str>
:     <str name="2">
: 0.0 = SumPayloadFunction.docScore()
: </str>
:   </lst>
: 
: I have tried using func=max as well, but it makes no difference.  Can
: anyone help me with what I am missing here?
: Thanks!
: Johnathan
: 

-Hoss
http://www.lucidworks.com/