To find content based on more complex search queries, such as using Alfresco Full Text Search (AFTS), use the SearchApi,;
For more information about this ReST API endpoint, see Finding Content by a Search Query.
For a description of the common parameters, such as include, see Common Parameters.
import org.alfresco.search.handler.SearchApi;
import org.alfresco.search.model.RequestQuery;
import org.alfresco.search.model.ResultSetPaging;
import org.alfresco.search.model.ResultSetRowEntry;
import org.alfresco.search.model.SearchRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.util.List;
@Component
public class SearchCmd {
static final Logger LOGGER = LoggerFactory.getLogger(SearchCmd.class);
@Autowired
SearchApi searchApi;
/**
* Search in a site
*
* @param siteId the site id
* @param term the term to search for in the site
*/
public void execute(String siteId, String term) throws IOException {
List<ResultSetRowEntry> result = search("(SITE:\"" + siteId + "\" AND TEXT:\"" + term + "\" )");
LOGGER.info("Search result: {}", result);
}
/**
* Search the repository for content using an Alfresco Full Text Search (AFTS) query
*
* @param aftsQuery the query statement
* @return a list of search results
*/
List<ResultSetRowEntry> search(String aftsQuery) {
ResponseEntity<ResultSetPaging> result = searchApi.search(new SearchRequest()
.query(new RequestQuery()
.language(RequestQuery.LanguageEnum.AFTS)
.query(aftsQuery)));
return result.getBody().getList().getEntries();
}
}