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.