lucene-solr-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jamie Johnson <>
Subject Re: Scoring, payloads and phrase queries
Date Sat, 25 Jul 2015 12:55:20 GMT
Thanks Mikhail! I had seen this but had originally thought it wouldn't be
usable.  That said I think I was wrong.  I have an example that rewrites a
phrase query as a SpanQuery and then uses the PayloadNearQuery which seems
to work correctly.  I have done something similar for MultiPhraseQuery
(though I am not sure it is right at this point as I don't understand the
usage of the positions in the class at this point).  My first cut is shown
below (PF is just a PayloadFunction and not of much interest).  Does this
look correct?

MultiPhraseQuery phrase = (MultiPhraseQuery)query;
List<Term[]> terms = phrase.getTermArrays();
SpanQuery[] topLevelSpans = new SpanQuery[terms.size()];
for(int j = 0; j < terms.size(); j++) {
    Term[] internalTerms = terms.get(j);
    SpanQuery[] sq = new SpanQuery[internalTerms.length];
    for(int i = 0; i < internalTerms.length; i++) {
        sq[i] = new SpanTermQuery(internalTerms[i]);
    topLevelSpans[j]= new SpanOrQuery(sq);
PayloadNearQuery pnq = new PayloadNearQuery(topLevelSpans,
phrase.getSlop(), true, new PF());

It looks like to support Payloads in all the query types I would like to
support I'll need to rewrite the queries (or their pieces) to a
PayloadNearQuery or a PayloadTermQuery.  Is there a PayloadMultiTermQuery
that Fuzzy, Range, Wildcard, etc. type of queries could be rewritten to?
Again thanks I really appreciate the pointer.

On Jul 25, 2015 5:22 AM, "Mikhail Khludnev" <>

> Does PayloadNearQuery suite for it?
> On Fri, Jul 24, 2015 at 5:41 PM, Jamie Johnson <> wrote:
> > Is there a way to consider payloads for scoring in phrase queries like
> > exists in PayloadTermQuery?
> >
> --
> Sincerely yours
> Mikhail Khludnev
> Principal Engineer,
> Grid Dynamics
> <>
> <>

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message