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

Reply via email to