How about a single field, with terms like: store1_USD|125.0 store2_EUR|220.0 store3_GBP|225.0
Would that do the trick? And yeah, payload decoding is currently limited to float and int with the built-in payload() function. We'd need a new way to pull out textual/bytes payloads - like maybe a DocTransformer? Erik > On Oct 21, 2019, at 9:59 AM, Vincenzo D'Amore <v.dam...@gmail.com> wrote: > > 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