Skip to content

Commit 93ac95b

Browse files
authored
fix: added missing table ref filter as terms query (#3984)
1 parent 594021e commit 93ac95b

File tree

1 file changed

+16
-10
lines changed

1 file changed

+16
-10
lines changed

opal-search/src/main/java/org/obiba/opal/search/service/impl/ContentQueryExecutor.java

+16-10
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,10 @@
1414
import com.google.common.collect.Sets;
1515
import org.apache.lucene.analysis.Analyzer;
1616
import org.apache.lucene.document.Document;
17-
import org.apache.lucene.index.DirectoryReader;
18-
import org.apache.lucene.index.IndexReader;
19-
import org.apache.lucene.index.IndexableField;
20-
import org.apache.lucene.index.StoredFields;
17+
import org.apache.lucene.index.*;
2118
import org.apache.lucene.queryparser.classic.ParseException;
2219
import org.apache.lucene.queryparser.classic.QueryParser;
23-
import org.apache.lucene.search.IndexSearcher;
24-
import org.apache.lucene.search.Query;
25-
import org.apache.lucene.search.ScoreDoc;
26-
import org.apache.lucene.search.TopDocs;
27-
import org.apache.lucene.search.TotalHitCountCollector;
20+
import org.apache.lucene.search.*;
2821
import org.apache.lucene.store.Directory;
2922
import org.obiba.opal.search.service.QuerySettings;
3023
import org.obiba.opal.search.service.SearchException;
@@ -64,8 +57,21 @@ public Search.QueryResultDto execute(QuerySettings querySettings) throws SearchE
6457
// Build a QueryParser
6558
QueryParser parser = new QueryParser("content", analyzer);
6659

67-
// Parse a query (search for books with "Lucene" in the title)
60+
// Parse a query
6861
Query query = parser.parse(querySettings.getQuery());
62+
if (querySettings.hasFilterReferences()) {
63+
// at least one table-ref must match
64+
BooleanQuery.Builder queryBuilder = new BooleanQuery.Builder();
65+
for (String tableRef : querySettings.getFilterReferences()) {
66+
queryBuilder.add(new TermQuery(new Term("table-ref", tableRef)), BooleanClause.Occur.SHOULD);
67+
}
68+
Query termsQuery = queryBuilder.build();
69+
70+
queryBuilder = new BooleanQuery.Builder();
71+
queryBuilder.add(new BooleanClause(query, BooleanClause.Occur.MUST));
72+
queryBuilder.add(new BooleanClause(termsQuery, BooleanClause.Occur.MUST));
73+
query = queryBuilder.build();
74+
}
6975
String lastDoc = querySettings.getLastDoc();
7076
ScoreDoc lastScoreDoc = Strings.isNullOrEmpty(lastDoc) ? null : ScoreDocSerializer.deserialize(lastDoc);
7177

0 commit comments

Comments
 (0)