Dear all,
Hi,
I am looking for a way to filtering lucene index with multiple conditions.
For this purpose I checked two different method of filtering search, none
of them work for me:

Using BooleanQuery:

BooleanQuery query = new BooleanQuery();
    String lower = "*";
    String upper = "*";
    for (String fieldName : keywordSourceFields) {
      TermRangeQuery rangeQuery = TermRangeQuery.newStringRange(fieldName,
          lower, upper, true, true);
      query.add(rangeQuery, Occur.MUST);
    }
    TermRangeQuery rangeQuery = TermRangeQuery.newStringRange(keywordField,
        lower, upper, true, true);
    query.add(rangeQuery, Occur.MUST_NOT);
    try {
      TopDocs results = searcher.search(query, null,
          maxNumDocs);


Using BooleanFilter:

BooleanFilter filter = new BooleanFilter();
    String lower = "*";
    String upper = "*";
    for (String fieldName : keywordSourceFields) {
      TermRangeFilter rangeFilter =
TermRangeFilter.newStringRange(fieldName,
          lower, upper, true, true);
      filter.add(rangeFilter, Occur.MUST_NOT);
    }
    TermRangeFilter rangeFilter =
TermRangeFilter.newStringRange(keywordField,
        lower, upper, true, true);
    filter.add(rangeFilter, Occur.MUST);
    try {
      TopDocs results = searcher.search(new MatchAllDocsQuery(), filter,
          maxNumDocs);

I was wondering what part of chosen queries are wrong? I am looking for
documents that for each keywordSourceFields, the field has some value AND
also has not value for keyword field. Please guide me through correcting
the corresponding query.

Best regards.

-- 
A.Nazemian

Reply via email to