Hi Erick, thanks for getting back to me. We started to use payloads because we have the classical per-store pricing problem. Thousands of stores across and different prices. Then we found the payloads very useful started to use it for many reasons, like enabling/disabling the product for such store, save the stock availability, or save the other info like buy/sell price, discount rates, and so on. All those information are numbers, but stores can also be in different countries, I mean would be useful also have the currency and other attributes related to the store.
Thinking about an alternative for payloads maybe I could use the dynamic fields, well, I know it is ugly. Consider this hypothetical case where I have two field payload : payloadPrice: [ "store1|125.0", "store2|220.0", "store3|225.0" ] payloadCurrency: [ "store1|USD", "store2|EUR", "store3|GBP" ] with dynamic fields I could have different fields for each document. currency_store1_s: "USD" currency_store2_s: "EUR" currency_store3_s: "GBP" But how many dynamic fields like this can I have? more than thousands? Again, I've just started to look at solr-ocrhighlighting github project you suggested. Those seems have written their own payload object type where store ocr highlighting information. It seems interesting, I'll take a look immediately. Thanks again for your time. Best regards, Vincenzo On Mon, Oct 21, 2019 at 2:55 PM Erick Erickson <erickerick...@gmail.com> wrote: > 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 > > -- Vincenzo D'Amore