|
14 | 14 | import com.google.common.collect.Sets;
|
15 | 15 | import org.apache.lucene.analysis.Analyzer;
|
16 | 16 | 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.*; |
21 | 18 | import org.apache.lucene.queryparser.classic.ParseException;
|
22 | 19 | 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.*; |
28 | 21 | import org.apache.lucene.store.Directory;
|
29 | 22 | import org.obiba.opal.search.service.QuerySettings;
|
30 | 23 | import org.obiba.opal.search.service.SearchException;
|
@@ -64,8 +57,21 @@ public Search.QueryResultDto execute(QuerySettings querySettings) throws SearchE
|
64 | 57 | // Build a QueryParser
|
65 | 58 | QueryParser parser = new QueryParser("content", analyzer);
|
66 | 59 |
|
67 |
| - // Parse a query (search for books with "Lucene" in the title) |
| 60 | + // Parse a query |
68 | 61 | 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 | + } |
69 | 75 | String lastDoc = querySettings.getLastDoc();
|
70 | 76 | ScoreDoc lastScoreDoc = Strings.isNullOrEmpty(lastDoc) ? null : ScoreDocSerializer.deserialize(lastDoc);
|
71 | 77 |
|
|
0 commit comments