Just a guess QueryParser might be a Lucene class, which isn;t aware of Solr scheme and hence might not properly convert term to number or point "product_type:106" Check the particular query with Solr fq, then use QParser for parsing. See QueryComponent as a sample.
On Fri, Mar 1, 2019 at 12:59 PM Moritz Schmidt <moritz.schm...@spektrum.de> wrote: > Hi there, > > I’m working on a custom SearchComponent to add some docs to the response > with another filter query than in the original request. > Here is what I currently have: > > public void process(ResponseBuilder rb) throws IOException { > if(rb.getResults() != null) { > QueryParser queryParser = new QueryParser("name", new > StandardAnalyzer()); > Query query = null; > try { > query = queryParser.parse("text_tg:" + rb.getQueryString()); > } catch (ParseException e) { > e.printStackTrace(); > } > > TopDocs additionalDocs = rb.req.getSearcher().search(query, 5); > ScoreDoc[] scoreDocs = additionalDocs.scoreDocs; > System.out.println(additionalDocs.scoreDocs.length); > ArrayList<Document> specialDocs = new ArrayList<Document>(); > > for(int i = 0; i < scoreDocs.length; i++) { > Document doc = rb.req.getSearcher().doc(scoreDocs[i].doc); > specialDocs.add(doc); > } > > rb.rsp.add("special_responses", specialDocs); > } > } > > This works fine but doesn’t filter the results. > As soon as I add something like ‘ AND product_type:106’ in the query, use > getDocList(Query query, Query filter, Sort lsort, int offset, int len) or a > BooleanQuery a la: > Query query = null; > Query filterQuery = null; > try { > filterQuery = queryParser.parse("product_type:106"); > query = queryParser.parse("text_tg:" + rb.getQueryString()); > } catch (ParseException e) { > e.printStackTrace(); > } > > BooleanClause queryClause = new BooleanClause(query, > BooleanClause.Occur.SHOULD); > BooleanClause filterClause = new BooleanClause(filterQuery, > BooleanClause.Occur.FILTER); > > BooleanQuery.Builder builder = new BooleanQuery.Builder(); > builder.add(queryClause); > builder.add(filterClause); > BooleanQuery bQuery = builder.build(); > > TopDocs additionalDocs = rb.req.getSearcher().search(bQuery, 5); > > I get 0 results. > > Does anyone know what I am doing wrong? > > Thanks in advance and best regards, > > Moritz Schmidt > > Spektrum Kompakt - Themen auf den Punkt gebracht. > www.spektrum.de/kompakt <http://www.spektrum.de/kompakt> > ____________________________________________ > > Spektrum der Wissenschaft Verlagsgesellschaft mbH > Sitz Heidelberg > Registergericht Mannheim, HRB 338114 > Geschaeftsfuehrer: Markus Bossle > ____________________________________________ > > Spektrum der Wissenschaft was founded in 1978 as the German edition of > Scientific American. > It publishes several popular science magazines in print and digital and > operates the biggest German language website on science news. > Spektrum der Wissenschaft is part of SpringerNature. > -- Sincerely yours Mikhail Khludnev