This is one of those situations where I know a client did it, but didn’t see 
the code myself.

So I can’t help much. 

Perhaps a good question at this point, though, is “why do you want to add 
string payloads anyway”?

This isn’t the client, but it might give you some pointers:

https://github.com/dbmdz/solr-ocrpayload-plugin/blob/master/src/main/java/de/digitalcollections/solr/plugin/components/ocrhighlighting/OcrHighlighting.java

Best,
Erick

> On Oct 21, 2019, at 6:37 AM, Vincenzo D'Amore <v.dam...@gmail.com> wrote:
> 
> Hi Erick,
> 
> It seems I've reached a dead-point, or at least it seems looking at the
> code, it seems I can't  easily add a custom decoder:
> 
> Looking at PayloadUtils class there is getPayloadDecoder method invoked to
> return the PayloadDecoder :
> 
>  public static PayloadDecoder getPayloadDecoder(FieldType fieldType) {
>    PayloadDecoder decoder = null;
> 
>    String encoder = getPayloadEncoder(fieldType);
> 
>    if ("integer".equals(encoder)) {
>      decoder = (BytesRef payload) -> payload == null ? 1 :
> PayloadHelper.decodeInt(payload.bytes, payload.offset);
>    }
>    if ("float".equals(encoder)) {
>      decoder = (BytesRef payload) -> payload == null ? 1 :
> PayloadHelper.decodeFloat(payload.bytes, payload.offset);
>    }
>    // encoder could be "identity" at this point, in the case of
> DelimitedTokenFilterFactory encoder="identity"
> 
>    // TODO: support pluggable payload decoders?
> 
>    return decoder;
>  }
> 
> Any advice to work around this situation?
> 
> 
> On Mon, Oct 21, 2019 at 1:51 AM Erick Erickson <erickerick...@gmail.com>
> wrote:
> 
>> You’d need to write one. Payloads are generally intended to hold numerics
>> you can then use in a function query to factor into the score…
>> 
>> Best,
>> Erick
>> 
>>> On Oct 20, 2019, at 4:57 PM, Vincenzo D'Amore <v.dam...@gmail.com>
>> wrote:
>>> 
>>> Sorry, I just realized that I was wrong in how I'm using the payload
>>> function.
>>> Give that the payload function only handles a numeric (integer or float)
>>> payload, could you suggest me an alternative function that handles
>> strings?
>>> If not, should I write one?
>>> 
>>> On Sun, Oct 20, 2019 at 10:43 PM Vincenzo D'Amore <v.dam...@gmail.com>
>>> wrote:
>>> 
>>>> Hi all,
>>>> 
>>>> I'm trying to understand what I did wrong with a payload query that
>>>> returns
>>>> 
>>>> error: {
>>>> metadata: [ "error-class", "org.apache.solr.common.SolrException",
>>>> "root-error-class", "org.apache.solr.common.SolrException" ],
>>>> msg: "No payload decoder found for field: colorCode",
>>>> code: 400
>>>> }
>>>> 
>>>> I have reduced my problem in a little sample to show what happens to me.
>>>> Basically I have a document with a couple of payload fields one
>>>> delimited_payloads_string and one delimited_payloads_integer
>>>> 
>>>> {
>>>> field_dps: "key|data",
>>>> field_dpi: "key|1",
>>>> }
>>>> 
>>>> When I execute this query solr returns as expected the payload for the
>> key
>>>> 
>>>> q=*:*&fl=payload(field_dpi,key)
>>>> 
>>>> {
>>>> payload(field_dpi,key): 1
>>>> }
>>>> 
>>>> But for the strings there have to be something of different to do,
>> because
>>>> I'm unable receive the payload value back. Executing this query, as in
>> the
>>>> short introduction of this post, I receive an error.
>>>> 
>>>> ?q=*:*&fl=payload(field_dps,key)
>>>> 
>>>> error: {
>>>> metadata: [ "error-class", "org.apache.solr.common.SolrException",
>>>> "root-error-class", "org.apache.solr.common.SolrException" ],
>>>> msg: "No payload decoder found for field: colorCode",
>>>> code: 400
>>>> }
>>>> 
>>>> Am I doing something wrong? How can I read strings payload data?
>>>> 
>>>> Thanks in advance for your time,
>>>> Vincenzo
>>>> 
>>>> --
>>>> Vincenzo D'Amore
>>>> 
>>>> 
>>> 
>>> --
>>> Vincenzo D'Amore
>> 
>> 
> 
> -- 
> Vincenzo D'Amore

Reply via email to