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.

Reply via email to