Alan, Does this code look equivalent? And how do I change PayLoadScoreQuery to do a Custom Similarity?
PayloadScoreQuery psq = new PayloadScoreQuery(sq, new AveragePayloadFunction()); @Override public Query parse() throws SyntaxError { if (qstr == null || qstr.length() == 0) return null; //BooleanQuery q = new BooleanQuery(); BooleanQuery.Builder q = new BooleanQuery.Builder(); q.setDisableCoord(true); if (qstr.length() > 1 && qstr.startsWith("\"") && qstr.endsWith("\"")) { qstr = qstr.substring(1,qstr.length()-1); } String[] nvps = StringUtils.split(qstr, " "); for (int i = 0; i < nvps.length; i++) { String[] nv = StringUtils.split(nvps[i], ":"); if (nv.length > 1) { if (nv[0].startsWith("+")) { SpanTermQuery sq = new SpanTermQuery(new Term(nv[0].substring(1), nv[1])); PayloadScoreQuery psq = new PayloadScoreQuery(sq, new AveragePayloadFunction()); q.add(psq, Occur.MUST); //q.add(new PayloadTermQuery(new Term(nv[0].substring(1), nv[1]), new AveragePayloadFunction(), false), Occur.MUST); } else { //q.add(new PayloadTermQuery(new Term(nv[0], nv[1]), new AveragePayloadFunction(), false), Occur.SHOULD); SpanTermQuery sq = new SpanTermQuery(new Term(nv[0], nv[1])); PayloadScoreQuery psq = new PayloadScoreQuery(sq, new AveragePayloadFunction()); q.add(psq, Occur.SHOULD); } } } // return q; return q.build(); } On Mon, Oct 19, 2015 at 1:49 AM, Alan Woodward <a...@flax.co.uk> wrote: > Hi Bill, > > This looks like an oversight on my part when migrating the payload scoring > queries - can you open a JIRA ticket to add 'includeSpanScore' as an option > to PayloadScoreQuery? > > As a workaround, you should be able to use a custom similarity that > returns 1 for all scores (see IndexSearcher.NON_SCORING_SIMILARITY for an > implementation that returns 0, you could just clone that and change > SimScorer.score()) > > Alan Woodward > www.flax.co.uk > > > On 19 Oct 2015, at 00:39, William Bell wrote: > > > Here is my first stab at it. Thoughts? > > > > Question: > > > > new PayloadTermQuery(new Term(nv[0].substring(1), nv[1]), new > > AveragePayloadFunction(), false) > > > > How do I handle the "false" ? It means boolean includeSpanScore > > > > > > @Override > > public Query parse() throws SyntaxError { > > > > if (qstr == null || qstr.length() == 0) return null; > > //BooleanQuery q = new BooleanQuery(); > > BooleanQuery.Builder q = new BooleanQuery.Builder(); > > q.setDisableCoord(true); > > if (qstr.length() > 1 && qstr.startsWith("\"") && > qstr.endsWith("\"")) { > > qstr = qstr.substring(1,qstr.length()-1); > > } > > String[] nvps = StringUtils.split(qstr, " "); > > for (int i = 0; i < nvps.length; i++) { > > String[] nv = StringUtils.split(nvps[i], ":"); > > if (nv.length > 1) { > > if (nv[0].startsWith("+")) { > > SpanTermQuery sq = new SpanTermQuery(new > > Term(nv[0].substring(1), nv[1])); > > PayloadScoreQuery psq = new PayloadScoreQuery(sq, new > > AveragePayloadFunction()); > > q.add(psq, Occur.MUST); > > //q.add(new PayloadTermQuery(new Term(nv[0].substring(1), > > nv[1]), new AveragePayloadFunction(), false), Occur.MUST); > > } else { > > //q.add(new PayloadTermQuery(new Term(nv[0], nv[1]), new > > AveragePayloadFunction(), false), Occur.SHOULD); > > SpanTermQuery sq = new SpanTermQuery(new Term(nv[0], > nv[1])); > > PayloadScoreQuery psq = new PayloadScoreQuery(sq, new > > AveragePayloadFunction()); > > q.add(psq, Occur.SHOULD); > > } > > } > > } > > // return q; > > return q.build(); > > } > > > > > > On Sun, Oct 18, 2015 at 4:46 PM, William Bell <billnb...@gmail.com> > wrote: > > > >> Wondering how to change my payload based on example: > >> > >> > https://lucidworks.com/blog/2014/06/13/end-to-end-payload-example-in-solr/ > >> > >> PayloadTermQuery and BooleanQuery are deprecated in 5.3.x > >> > >> @Override > >> public Query parse() throws SyntaxError { > >> > >> if (qstr == null || qstr.length() == 0) return null; > >> BooleanQuery q = new BooleanQuery(); > >> if (qstr.length() > 1 && qstr.startsWith("\"") && > qstr.endsWith("\"")) { > >> qstr = qstr.substring(1,qstr.length()-1); > >> } > >> String[] nvps = StringUtils.split(qstr, " "); > >> for (int i = 0; i < nvps.length; i++) { > >> String[] nv = StringUtils.split(nvps[i], ":"); > >> if (nv.length > 1) { > >> if (nv[0].startsWith("+")) { > >> q.add(new PayloadTermQuery(new Term(nv[0].substring(1), > nv[1]), > >> new AveragePayloadFunction(), false), Occur.MUST); > >> } else { > >> q.add(new PayloadTermQuery(new Term(nv[0], nv[1]), > >> new AveragePayloadFunction(), false), Occur.SHOULD); > >> } > >> } > >> } > >> return q; > >> } > >> > >> > >> -- > >> Bill Bell > >> billnb...@gmail.com > >> cell 720-256-8076 > >> > > > > > > > > -- > > Bill Bell > > billnb...@gmail.com > > cell 720-256-8076 > > -- Bill Bell billnb...@gmail.com cell 720-256-8076