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:
@@ -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());
|
||||
|
||||
@@ -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.
|
||||
*
|
||||
|
||||
@@ -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>();
|
||||
|
||||
Reference in New Issue
Block a user