public class SearchGenerator extends AbstractSearchGenerator
Modifier and Type | Class and Description |
---|---|
protected static class |
SearchGenerator.ContentTypeSearch
Enumeration for content type search
|
(package private) static class |
SearchGenerator.ContentTypeSearchField |
AbstractSearchGenerator.ContentTypeFacetField, AbstractSearchGenerator.FacetField, AbstractSearchGenerator.MetadataFacetField
Modifier and Type | Field and Description |
---|---|
private static String |
__FACETS_CACHE |
protected QueryAdapterFOSearchExtensionPoint |
_queryAdapterFOSearchEP
The query adapter extension point
|
protected SiteTypesExtensionPoint |
_siteTypeEP
The site type manager
|
_contentHelper, _contentTypesHelper, _context, _cTypeExtPt, _dcProvider, _metadataManager, _resolver, _searcherFactory, _searchHelper, _siteManager, _tagExtPt, _TEXTFIELD_PATTERN, _uriResolverEP, DOCUMENT_TYPE_IS_PAGE_RESOURCE_FACET_NAME
manager
objectModel, parameters, resolver, source
contentHandler, EMPTY_CONTENT_HANDLER, lexicalHandler, xmlConsumer
ATTACHMENT_PAGE_ID, CONTENT_IDS, CONTENT_INTERESTING_DATES, DATE_FOR_SORTING, DATES_FACET, FACETABLE_CONTENT_FIELD_PREFIX, LASTNAME_FOR_SORTING, ORPHAN, PAGE_ANCESTOR_IDS, PAGE_CONTENT_TYPES, PAGE_DEPTH, PAGE_IDS, PAGE_LONG_TITLE, PAGE_OUTGOING_REFEERENCES_RESOURCE_IDS, PAGE_PARENT_ID, PAGE_TITLE, PAGE_TYPE, PAGE_VISIBLE_ATTACHMENT_RESOURCE_IDS, PRIVACY, SECTION_PAGE_TITLE, SERVICE_IDS, SHARED, SITE_NAME, SITE_TYPE, SITEMAP_NAME, TEMPLATE, TYPE_PAGE, TYPE_PAGE_RESOURCE
ACL_INIT_VALUE_ALLOWED_GROUPS, ACL_INIT_VALUE_ALLOWED_USERS, ACL_INIT_VALUE_ANONYMOUS, ACL_INIT_VALUE_ANYCONNECTED, ACL_INIT_VALUE_DENIED_GROUPS, ACL_INIT_VALUE_DENIED_USERS, ALL_CONTENT_TYPES, ALL_MIXIN_TYPES, ALL_TAGS, ATTACHMENT_CONTENT_ID, CONTENT_COMMENTS, CONTENT_COMMENTS_NONVALIDATED, CONTENT_COMMENTS_VALIDATED, CONTENT_CREATOR, CONTENT_LANGUAGE, CONTENT_LANGUAGES, CONTENT_LAST_CONTRIBUTOR, CONTENT_NAME, CONTENT_OUTGOING_REFEERENCES_RESOURCE_IDS, CONTENT_TITLES, CONTENT_TYPE_RESOURCE, CONTENT_TYPES, CONTENT_VISIBLE_ATTACHMENT_RESOURCE_IDS, CREATION_DATE, DC_CONTRIBUTOR, DC_COVERAGE, DC_CREATOR, DC_DATE, DC_DESCRIPTION, DC_FORMAT, DC_IDENTIFIER, DC_LANGUAGE, DC_PUBLISHER, DC_RELATION, DC_RIGHTS, DC_SOURCE, DC_SUBJECT, DC_TITLE, DC_TYPE, DOCUMENT_TYPE, EXCERPT, FILENAME, FIRST_VALIDATION, FULL_EXACT_WS, FULL_GENERAL, FULL_PREFIX, FULL_STEMMED_PREFIX, ID, IS_AMETYS_OBJECT, LAST_MAJOR_VALIDATION, LAST_MODIFIED, LAST_VALIDATION, LENGTH, MIME_TYPES, MIXIN_TYPES, PATH, PSEUDO_CONTENT_TYPE_VALUE_RESOURCE, PSEUDO_CONTENT_TYPES, REPEATER_ENTRY_POSITION, RESOURCE_ANCESTOR_AND_SELF_IDS, RESOURCE_ANCESTOR_IDS, RESOURCE_CREATOR, RESOURCE_DATE, RESOURCE_LAST_MODIFIED, RESOURCE_ROOT_ID, SIMPLE_CONTENT_PARENTS, SUB_CONTENT, TAGS, TITLE, TITLE_SORT, TYPE_CONTENT, TYPE_CONTENT_ATTACHMENT_RESOURCE, TYPE_CONTENT_ATTRIBUTE_RESOURCE, TYPE_REPEATER, TYPE_RESOURCE, TYPE_WF_ENTRY, TYPE_WF_STEP, WORKFLOW_CURRENT_STEPS, WORKFLOW_CURRENT_STEPS_DV, WORKFLOW_ENTRY_STATE, WORKFLOW_HISTORY_STEPS, WORKFLOW_HISTORY_STEPS_DV, WORKFLOW_NAME, WORKFLOW_REF, WORKFLOW_REF_DV, WORKFLOW_STEP, WORKFLOW_STEP_ACTIONID, WORKFLOW_STEP_CALLER, WORKFLOW_STEP_DUEDATE, WORKFLOW_STEP_FINISHDATE, WORKFLOW_STEP_ID, WORKFLOW_STEP_OWNER, WORKFLOW_STEP_STARTDATE, WORKFLOW_STEP_STATUS
Constructor and Description |
---|
SearchGenerator() |
Modifier and Type | Method and Description |
---|---|
protected void |
_additionalSearchProcessing(SearcherFactory.Searcher searcher)
Allow to perform other searcher configuration
|
protected void |
_addMetadataFacet(Map<String,AbstractSearchGenerator.FacetField> facets,
Collection<String> contentTypes,
String metadataPath)
Add metadata facet to facets map
|
private String |
_buildSubQuery(Query subQuery) |
private String |
_escapedTextForSearch(String value) |
private String |
_escapeQueryCharsButNotQuotes(String text) |
private Set<String> |
_getAllContentTypes() |
private Collection<String> |
_getAvailableContentTypes(Request request) |
private Expression |
_getContentTypeExpression(String parentCTypeId) |
private Map<String,Integer> |
_getFacetQueryResults(SearchResults<AmetysObject> results) |
private int |
_getNbResource(Map<String,Integer> facetQueryResults) |
private SearchResults<AmetysObject> |
_getResultsForContentType(Query queryObject,
Collection<Query> filterQueries,
Collection<SearchField> facets,
List<Sort> sorts,
Map<String,List<String>> initialFacetValues,
String forceContentType) |
private List<QueryAdapterFOSearch> |
_getSortedListQueryAdapter() |
protected Query |
_getStringMetadataQuery(String language,
String metadataPath,
String value,
MetadataDefinition metadataDefinition)
Get query from string metadata
|
private void |
_handleFacetResults(Request request,
int start,
int maxResults,
SearchResults<AmetysObject> results,
String currentCtype) |
private boolean |
_isPrivate(Site site) |
private void |
_saxAllWords(Request request) |
private void |
_saxContentType(Request request) |
private void |
_saxContentTypeCriteria(Request request) |
private void |
_saxDates(Request request) |
private void |
_saxExactWording(Request request) |
private void |
_saxMetadataCriteria(Request request,
String language) |
private void |
_saxMetadataValues(Request request) |
private void |
_saxMultisite(Request request) |
private void |
_saxNoWords(Request request) |
private void |
_saxPages(Request request) |
private void |
_saxSitemapCriteria() |
private void |
_saxTag(Tag tag,
boolean recursive) |
private void |
_saxTags(Request request) |
private void |
_saxTagsCriteria(String siteName) |
private void |
_saxTextField(Request request) |
private LocalDate |
_toDate(String dateStr) |
protected void |
addAllWordsTextFieldQuery(Collection<Query> queries,
String language,
Request request)
Add content query for "all words"
|
protected void |
addContentTypeQuery(Collection<Query> queries,
Request request)
Add the content type query
|
protected void |
addDateQuery(Collection<Query> queries,
Request request)
Add the query on start and end dates
|
protected void |
addExactWordingTextFieldQuery(Collection<Query> queries,
String language,
Request request)
Add content query for exact wording or phrase
|
protected void |
addMetadataQuery(Collection<Query> queries,
String language,
Request request)
Add query for each metadata
|
protected void |
addNoWordsTextFieldQuery(Collection<Query> queries,
String language,
Request request)
Add content query for "none of these words"
|
protected void |
addPagesQuery(Collection<Query> queries,
Request request)
Add the pages query
|
protected void |
addTagsQuery(Collection<Query> queries,
Request request)
Add the tags query
|
protected void |
addTextFieldQuery(Collection<Query> queries,
String language,
Request request)
Add the text field query
|
protected List<Query> |
getContentQueries(Request request,
Collection<String> siteNames,
String language)
Get the queries to be apply on joined contents ONLY
|
protected List<Query> |
getContentResourcesOrAttachmentQueries(Query subQuery)
Get the queries for content's attachments and resources
|
protected String |
getContentTypeFilterValue(Request request)
Get the content type's filter value
|
protected Collection<String> |
getContentTypes(Request request)
Get the content type's
|
protected SearchGenerator.ContentTypeSearch |
getContentTypeSearch(Request request)
Return the type of content type's search
|
protected Map<String,String> |
getContentValues(String cTypeId,
String language)
Get values for contents enumeration
|
protected Collection<String> |
getDocumentTypes(Request request)
Get the document types.
|
protected Map<String,AbstractSearchGenerator.FacetField> |
getFacets(Request request)
Get the facets from request parameters
|
protected Map<String,List<String>> |
getFacetValues(Request request,
Collection<String> siteNames,
String language)
Get the facet values
|
protected Collection<String> |
getFields()
Get the searchable fields
|
protected Collection<Query> |
getFilterQueries(Request request,
Collection<String> siteNames,
String language)
Get the filter queries from the request parameters.
|
protected Collection<Query> |
getFixedCTypeFilterQueries(Request request,
String cType,
Collection<String> siteNames,
String language)
Get the filter queries for a single fixed content type.
|
protected List<Query> |
getPageQueries(Request request,
Collection<String> siteNames,
String language)
Get the queries to be apply on pages ONLY
|
protected List<Query> |
getPageResourcesOrAttachmentQueries(Query subQuery)
Get the queries for page's attachments and resources
|
protected List<Sort> |
getPrimarySortFields(Request request)
Get the primary sort fields
|
protected Query |
getQuery(Request request,
Collection<String> siteNames,
String language)
Get the query from request parameters
|
protected Set<FrontOfficeSearcherFactory.QueryFacet> |
getQueryFacets(Request request)
Get the facet.queries
|
protected Collection<String> |
getQueryFacetValues(Request request)
Get the facet.query values
|
protected Sort |
getSortField(Request request)
Get the sort field
|
protected List<Query> |
getWordingQueries(Request request,
Collection<String> siteNames,
String language)
Get the queries on wording (keywords, no words, exact wording, no words)
|
protected void |
saxEnumeratorValueForMetadata(MetadataDefinition metadataDef,
String metadataPath,
String language)
Sax enumeration value for enum or a content metadata
|
protected void |
saxFormFields(Request request,
String siteName,
String lang)
SAX the form search criteria
|
protected void |
saxFormValues(Request request,
int start,
int offset)
SAX the form search criteria values
|
protected void |
saxHits(SearchResults<AmetysObject> results,
int start,
int maxResults)
SAX the result hits
|
protected void |
saxMetadataDef(MetadataDefinition metadataDef,
String metadataPath,
String language)
Sax metadata set information for metadata
|
protected SearchResults<AmetysObject> |
search(Request request,
Collection<String> siteNames,
String language,
int pageIndex,
int start,
int maxResults)
Search
|
void |
service(ServiceManager smanager) |
contextualize, generate, getDocumentTypesQuery, getPageIndex, getSearchMode, getZoneItem, isInputValid, saxAdditionalInfos, saxAdditionalInfosOnPageHit, saxContent, saxFacets, saxFormParameters, saxPageHit, saxPagination, saxResourceHit, saxRichTextExcerpt, saxServiceIdentifiers, saxSort, search, useFacets
dispose
recycle, setup
setConsumer, setContentHandler, setLexicalHandler
enableLogging, getLogger, setupLogger, setupLogger, setupLogger
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
setConsumer
private static final String __FACETS_CACHE
protected QueryAdapterFOSearchExtensionPoint _queryAdapterFOSearchEP
protected SiteTypesExtensionPoint _siteTypeEP
public SearchGenerator()
public void service(ServiceManager smanager) throws ServiceException
service
in interface Serviceable
service
in class AbstractSearchGenerator
ServiceException
protected SearchGenerator.ContentTypeSearch getContentTypeSearch(Request request)
request
- The requestprotected SearchResults<AmetysObject> search(Request request, Collection<String> siteNames, String language, int pageIndex, int start, int maxResults) throws Exception
AbstractSearchGenerator
search
in class AbstractSearchGenerator
request
- the requestsiteNames
- The name of the sites to search inlanguage
- The language code to searchpageIndex
- the page indexstart
- The offset for search resultsmaxResults
- The maximum number of resultsException
- If an error occurred during searchprivate Map<String,Integer> _getFacetQueryResults(SearchResults<AmetysObject> results)
private int _getNbResource(Map<String,Integer> facetQueryResults)
private SearchResults<AmetysObject> _getResultsForContentType(Query queryObject, Collection<Query> filterQueries, Collection<SearchField> facets, List<Sort> sorts, Map<String,List<String>> initialFacetValues, String forceContentType) throws Exception
Exception
protected void _additionalSearchProcessing(SearcherFactory.Searcher searcher)
AbstractSearchGenerator
_additionalSearchProcessing
in class AbstractSearchGenerator
searcher
- The searcher that will be used for the search operationprivate void _handleFacetResults(Request request, int start, int maxResults, SearchResults<AmetysObject> results, String currentCtype) throws SAXException, IOException
SAXException
IOException
protected Query getQuery(Request request, Collection<String> siteNames, String language) throws IllegalArgumentException
AbstractSearchGenerator
getQuery
in class AbstractSearchGenerator
request
- The requestsiteNames
- The site names.language
- The languageIllegalArgumentException
- If the search field is invalid.protected List<Query> getWordingQueries(Request request, Collection<String> siteNames, String language)
request
- the requestsiteNames
- the site nameslanguage
- the languageprotected List<Query> getContentQueries(Request request, Collection<String> siteNames, String language)
request
- the requestsiteNames
- the site nameslanguage
- the languageprotected List<Query> getPageQueries(Request request, Collection<String> siteNames, String language)
request
- the requestsiteNames
- the site nameslanguage
- the languageprotected Collection<Query> getFilterQueries(Request request, Collection<String> siteNames, String language) throws IllegalArgumentException
AbstractSearchGenerator
getFilterQueries
in class AbstractSearchGenerator
request
- The request.siteNames
- The site names.language
- The language.IllegalArgumentException
- If a search field is invalid.protected Map<String,List<String>> getFacetValues(Request request, Collection<String> siteNames, String language) throws IllegalArgumentException
AbstractSearchGenerator
getFacetValues
in class AbstractSearchGenerator
request
- The requestsiteNames
- The site nameslanguage
- The languageIllegalArgumentException
protected Collection<String> getQueryFacetValues(Request request)
AbstractSearchGenerator
getQueryFacetValues
in class AbstractSearchGenerator
request
- The requestprotected Map<String,AbstractSearchGenerator.FacetField> getFacets(Request request) throws IllegalArgumentException
AbstractSearchGenerator
getFacets
in class AbstractSearchGenerator
request
- The requestIllegalArgumentException
- If the search field is invalid.protected void _addMetadataFacet(Map<String,AbstractSearchGenerator.FacetField> facets, Collection<String> contentTypes, String metadataPath)
facets
- the facets mapcontentTypes
- the content typesmetadataPath
- the metadata pathprotected Set<FrontOfficeSearcherFactory.QueryFacet> getQueryFacets(Request request)
AbstractSearchGenerator
getQueryFacets
in class AbstractSearchGenerator
request
- The requestprotected Collection<Query> getFixedCTypeFilterQueries(Request request, String cType, Collection<String> siteNames, String language)
request
- The request.cType
- The fixed content type.siteNames
- the site names.language
- The language.protected Collection<String> getDocumentTypes(Request request)
AbstractSearchGenerator
getDocumentTypes
in class AbstractSearchGenerator
request
- The request.protected Collection<String> getFields()
AbstractSearchGenerator
getFields
in class AbstractSearchGenerator
protected void saxHits(SearchResults<AmetysObject> results, int start, int maxResults) throws SAXException, IOException
AbstractSearchGenerator
saxHits
in class AbstractSearchGenerator
results
- The search results.start
- The start indexmaxResults
- The number of results to generate.SAXException
- If an error occurs while SAXingIOException
- If there is a low-level IO errorprotected Sort getSortField(Request request)
AbstractSearchGenerator
getSortField
in class AbstractSearchGenerator
request
- The requestprotected List<Sort> getPrimarySortFields(Request request)
AbstractSearchGenerator
getPrimarySortFields
in class AbstractSearchGenerator
request
- The requestprotected void saxFormFields(Request request, String siteName, String lang) throws SAXException
AbstractSearchGenerator
saxFormFields
in class AbstractSearchGenerator
request
- The requestsiteName
- The current site namelang
- The current languageSAXException
- if an error occurs while SAXingprivate boolean _isPrivate(Site site)
private void _saxMetadataCriteria(Request request, String language) throws SAXException
SAXException
protected void saxMetadataDef(MetadataDefinition metadataDef, String metadataPath, String language) throws SAXException
metadataDef
- The metadata definition.metadataPath
- The metadata pathlanguage
- The current languageSAXException
- If an error occurred while saxingprotected void saxEnumeratorValueForMetadata(MetadataDefinition metadataDef, String metadataPath, String language) throws SAXException
metadataDef
- The metadata definition.metadataPath
- The metadata pathlanguage
- The current languageSAXException
- If an error occurred while saxingprotected Map<String,String> getContentValues(String cTypeId, String language)
cTypeId
- The id of content typelanguage
- The current languageprivate Expression _getContentTypeExpression(String parentCTypeId)
protected void saxFormValues(Request request, int start, int offset) throws SAXException
AbstractSearchGenerator
saxFormValues
in class AbstractSearchGenerator
request
- The requeststart
- The start indexoffset
- The number of resultsSAXException
- if an error occurs while SAXingprivate void _saxDates(Request request) throws SAXException
SAXException
private void _saxTextField(Request request) throws SAXException
SAXException
private void _saxMetadataValues(Request request) throws SAXException
SAXException
private void _saxAllWords(Request request) throws SAXException
SAXException
private void _saxExactWording(Request request) throws SAXException
SAXException
private void _saxNoWords(Request request) throws SAXException
SAXException
private void _saxContentType(Request request) throws SAXException
SAXException
private void _saxTags(Request request) throws SAXException
SAXException
private void _saxPages(Request request) throws SAXException
SAXException
private void _saxMultisite(Request request) throws SAXException
SAXException
protected Collection<String> getContentTypes(Request request)
request
- The requestprivate Collection<String> _getAvailableContentTypes(Request request)
private Set<String> _getAllContentTypes()
private void _saxContentTypeCriteria(Request request) throws SAXException
SAXException
private void _saxTagsCriteria(String siteName) throws SAXException
SAXException
private void _saxTag(Tag tag, boolean recursive) throws SAXException
SAXException
private void _saxSitemapCriteria() throws SAXException
SAXException
protected String getContentTypeFilterValue(Request request)
request
- The requestprotected void addTextFieldQuery(Collection<Query> queries, String language, Request request)
queries
- the querieslanguage
- the languagerequest
- the requestprotected List<Query> getContentResourcesOrAttachmentQueries(Query subQuery)
subQuery
- the query for attachments and resourcesprotected List<Query> getPageResourcesOrAttachmentQueries(Query subQuery)
subQuery
- the query for attachments and resourcesprivate String _buildSubQuery(Query subQuery) throws QuerySyntaxException
QuerySyntaxException
private String _escapeQueryCharsButNotQuotes(String text)
protected void addMetadataQuery(Collection<Query> queries, String language, Request request) throws IllegalArgumentException
queries
- The list of querylanguage
- The langrequest
- The requestIllegalArgumentException
- If an error occurredprotected Query _getStringMetadataQuery(String language, String metadataPath, String value, MetadataDefinition metadataDefinition)
language
- the languagemetadataPath
- the metadata pathvalue
- the valuemetadataDefinition
- the metadata definitionprivate String _escapedTextForSearch(String value)
protected void addAllWordsTextFieldQuery(Collection<Query> queries, String language, Request request)
queries
- The querieslanguage
- The current languagerequest
- the requestprotected void addExactWordingTextFieldQuery(Collection<Query> queries, String language, Request request)
queries
- The querieslanguage
- The current languagerequest
- the requestprotected void addNoWordsTextFieldQuery(Collection<Query> queries, String language, Request request)
queries
- The querieslanguage
- The current languagerequest
- the requestprotected void addContentTypeQuery(Collection<Query> queries, Request request)
queries
- The queriesrequest
- The requestprotected void addTagsQuery(Collection<Query> queries, Request request)
queries
- The queriesrequest
- The requestprotected void addPagesQuery(Collection<Query> queries, Request request)
queries
- The queriesrequest
- The requestprotected void addDateQuery(Collection<Query> queries, Request request)
queries
- The queriesrequest
- The requestprivate List<QueryAdapterFOSearch> _getSortedListQueryAdapter()