1
0
mirror of https://github.com/sismics/docs.git synced 2025-12-18 20:21:41 +00:00

Search criterias on full content and specific date

This commit is contained in:
jendib
2013-08-18 13:02:50 +02:00
parent fd95ecc4cb
commit 4f8076427b
12 changed files with 133 additions and 44 deletions

View File

@@ -154,9 +154,9 @@ public class DocumentDao {
criteriaList.add("d.DOC_IDUSER_C = :userId");
parameterMap.put("userId", criteria.getUserId());
}
if (!Strings.isNullOrEmpty(criteria.getSearch())) {
if (!Strings.isNullOrEmpty(criteria.getSearch()) || !Strings.isNullOrEmpty(criteria.getFullSearch())) {
LuceneDao luceneDao = new LuceneDao();
Set<String> documentIdList = luceneDao.search(criteria.getUserId(), criteria.getSearch());
Set<String> documentIdList = luceneDao.search(criteria.getUserId(), criteria.getSearch(), criteria.getFullSearch());
if (documentIdList.size() == 0) {
// If the search doesn't find any document, the request should return nothing
documentIdList.add(UUID.randomUUID().toString());

View File

@@ -20,6 +20,11 @@ public class DocumentCriteria {
*/
private String search;
/**
* Full content search query.
*/
private String fullSearch;
/**
* Minimum creation date.
*/
@@ -81,6 +86,24 @@ public class DocumentCriteria {
this.search = search;
}
/**
* Getter of fullSearch.
*
* @return the fullSearch
*/
public String getFullSearch() {
return fullSearch;
}
/**
* Setter of fullSearch.
*
* @param fullSearch fullSearch
*/
public void setFullSearch(String fullSearch) {
this.fullSearch = fullSearch;
}
/**
* Getter of createDateMin.
*

View File

@@ -143,13 +143,15 @@ public class LuceneDao {
* Search files.
*
* @param userId User ID to filter on
* @param searchQuery Search query
* @param searchQuery Search query on title and description
* @param fullSearchQuery Search query on all fields
* @return List of document IDs
* @throws Exception
*/
public Set<String> search(String userId, String searchQuery) throws Exception {
public Set<String> search(String userId, String searchQuery, String fullSearchQuery) throws Exception {
// Escape query and add quotes so QueryParser generate a PhraseQuery
searchQuery = "\"" + QueryParserUtil.escape(searchQuery) + "\"";
searchQuery = "\"" + QueryParserUtil.escape(searchQuery + " " + fullSearchQuery) + "\"";
fullSearchQuery = "\"" + QueryParserUtil.escape(fullSearchQuery) + "\"";
// Build search query
StandardQueryParser qpHelper = new StandardQueryParser(new DocsStandardAnalyzer(Version.LUCENE_42));
@@ -157,9 +159,9 @@ public class LuceneDao {
// Search on documents and files
BooleanQuery query = new BooleanQuery();
query.add(qpHelper.parse(searchQuery, "content"), Occur.SHOULD);
query.add(qpHelper.parse(searchQuery, "title"), Occur.SHOULD);
query.add(qpHelper.parse(searchQuery, "description"), Occur.SHOULD);
query.add(qpHelper.parse(fullSearchQuery, "content"), Occur.SHOULD);
// Filter on provided user ID
List<Term> terms = new ArrayList<Term>();