Class DefaultSearchService<Q,R>
java.lang.Object
com.broadleafcommerce.search.core.service.DefaultSearchService<Q,R>
- Type Parameters:
Q
- The query object to send to the search engineR
- The query response received from the search engine
- All Implemented Interfaces:
SearchService<com.broadleafcommerce.search.api.domain.SearchResponse>
public class DefaultSearchService<Q,R>
extends Object
implements SearchService<com.broadleafcommerce.search.api.domain.SearchResponse>
Default searching implementation, including checking for redirects.
-
Constructor Summary
ConstructorsConstructorDescriptionDefaultSearchService
(QueryBuilder<Q> queryBuilder, ResponseParser<R, com.broadleafcommerce.search.api.domain.SearchResponse> responseParser, com.broadleafcommerce.search.provider.SearchProvider<Q, R> searchProvider, FieldDefinitionService<com.broadleafcommerce.search.api.domain.FieldDefinition> fieldDefinitionService, SearchValidator validator) -
Method Summary
Modifier and TypeMethodDescriptionprotected void
attachFacetsToFieldDefinitions
(List<com.broadleafcommerce.search.api.domain.FieldDefinition> fieldDefinitions, String type, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected List<com.broadleafcommerce.search.api.domain.Facet>
determineAvailableFacetsForFacetGroup
(com.broadleafcommerce.search.api.domain.SettingsFacetGroup settingsFacetGroup, String type, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected List<com.broadleafcommerce.search.api.domain.Facet>
determineFacetsForSearchRequest
(List<com.broadleafcommerce.search.api.domain.FieldDefinition> fieldDefinitions, String indexableType, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) protected com.broadleafcommerce.search.api.domain.SearchResponse
executeSearch
(com.broadleafcommerce.search.api.domain.SearchRequest searchRequest, List<com.broadleafcommerce.search.api.domain.FieldDefinition> fieldDefinitions, org.springframework.data.domain.Pageable page, com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Execute a search engine search for the requested query, page, and context.protected FacetGroupFacetService<com.broadleafcommerce.search.api.domain.FacetGroupFacet>
protected FacetGroupService<com.broadleafcommerce.search.api.domain.FacetGroup>
protected FacetService<com.broadleafcommerce.search.api.domain.Facet>
protected FieldDefinitionService<com.broadleafcommerce.search.api.domain.FieldDefinition>
protected QueryBuilder<Q>
protected ResponseParser<R,
com.broadleafcommerce.search.api.domain.SearchResponse> protected SearchSettingsUtils
protected SettingsFacetGroupService<com.broadleafcommerce.search.api.domain.SettingsFacetGroup>
protected SearchValidator
protected List<com.broadleafcommerce.search.api.domain.FieldDefinition>
readFieldDefinitions
(String type, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Returns an unmodifiable List of FieldDefinitions for a specific type.protected com.broadleafcommerce.search.api.domain.SearchResponse
runSpellCheckSearch
(com.broadleafcommerce.search.api.domain.SearchResponse originalResponse, com.broadleafcommerce.search.api.domain.SearchRequest searchRequest, List<com.broadleafcommerce.search.api.domain.FieldDefinition> fieldDefinitions, org.springframework.data.domain.Pageable page, com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Re-runs a search with the suggested spell-check corrected query if applicable.com.broadleafcommerce.search.api.domain.SearchResponse
search
(com.broadleafcommerce.search.api.domain.SearchRequest searchRequest, org.springframework.data.domain.Pageable page, com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Execute a search for the provided requested query and page.void
setFacetGroupFacetService
(FacetGroupFacetService<com.broadleafcommerce.search.api.domain.FacetGroupFacet> facetGroupFacetService) void
setFacetGroupService
(FacetGroupService<com.broadleafcommerce.search.api.domain.FacetGroup> facetGroupService) void
setFacetService
(FacetService<com.broadleafcommerce.search.api.domain.Facet> facetService) void
setSearchSettingsUtils
(SearchSettingsUtils searchSettingsUtils) void
setSettingsFacetGroupService
(SettingsFacetGroupService<com.broadleafcommerce.search.api.domain.SettingsFacetGroup> settingsFacetGroupService)
-
Constructor Details
-
DefaultSearchService
public DefaultSearchService(QueryBuilder<Q> queryBuilder, ResponseParser<R, com.broadleafcommerce.search.api.domain.SearchResponse> responseParser, com.broadleafcommerce.search.provider.SearchProvider<Q, R> searchProvider, FieldDefinitionService<com.broadleafcommerce.search.api.domain.FieldDefinition> fieldDefinitionService, SearchValidator validator)
-
-
Method Details
-
search
public com.broadleafcommerce.search.api.domain.SearchResponse search(com.broadleafcommerce.search.api.domain.SearchRequest searchRequest, org.springframework.data.domain.Pageable page, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context) throws com.broadleafcommerce.search.api.SearchException, com.broadleafcommerce.search.api.InvalidSearchException Execute a search for the provided requested query and page.If a search redirect is found, return only that and do not execute search.
- Specified by:
search
in interfaceSearchService<Q>
- Parameters:
searchRequest
- The query information to search bypage
- The page to retrievecontext
- The context information surrounding sandboxing/multitenant state- Returns:
- Search results with facet and sort information
- Throws:
com.broadleafcommerce.search.api.SearchException
- if an error occurs in searchingcom.broadleafcommerce.search.api.InvalidSearchException
-
executeSearch
protected com.broadleafcommerce.search.api.domain.SearchResponse executeSearch(com.broadleafcommerce.search.api.domain.SearchRequest searchRequest, List<com.broadleafcommerce.search.api.domain.FieldDefinition> fieldDefinitions, org.springframework.data.domain.Pageable page, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context) throws com.broadleafcommerce.search.api.SearchException Execute a search engine search for the requested query, page, and context.- Parameters:
searchRequest
- The query information to search bypage
- The page to retrievecontext
- The context information surrounding sandboxing/multitenant state- Returns:
- Search results with facet and sort information
- Throws:
com.broadleafcommerce.search.api.SearchException
- if an error occurs in searching
-
runSpellCheckSearch
protected com.broadleafcommerce.search.api.domain.SearchResponse runSpellCheckSearch(com.broadleafcommerce.search.api.domain.SearchResponse originalResponse, com.broadleafcommerce.search.api.domain.SearchRequest searchRequest, List<com.broadleafcommerce.search.api.domain.FieldDefinition> fieldDefinitions, org.springframework.data.domain.Pageable page, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context) throws com.broadleafcommerce.search.api.SearchException Re-runs a search with the suggested spell-check corrected query if applicable.- Parameters:
originalResponse
- The original search responsesearchRequest
- The search requestfieldDefinitions
- The field definitions used on the original querypage
- The page to retrievecontext
- The context information surrounding sandboxing/multitenant statefieldDefinitions
- The field definitions used on the original query- Returns:
- A search response with corrections made by spellcheck or the original search response if no corrections needed.
- Throws:
com.broadleafcommerce.search.api.SearchException
- if an error occurs in searching
-
readFieldDefinitions
protected List<com.broadleafcommerce.search.api.domain.FieldDefinition> readFieldDefinitions(String type, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Returns an unmodifiable List of FieldDefinitions for a specific type.- Parameters:
type
- The type.contextInfo
- (optional) The context information surrounding sandboxing/multitenant state- Returns:
- An unmodifiable list of FieldDefinitions.
-
attachFacetsToFieldDefinitions
-
determineFacetsForSearchRequest
-
determineAvailableFacetsForFacetGroup
-
getQueryBuilder
-
getResponseParser
protected ResponseParser<R,com.broadleafcommerce.search.api.domain.SearchResponse> getResponseParser() -
getSearchProvider
-
getFieldDefinitionService
protected FieldDefinitionService<com.broadleafcommerce.search.api.domain.FieldDefinition> getFieldDefinitionService() -
getValidator
-
setFacetService
@Autowired public void setFacetService(FacetService<com.broadleafcommerce.search.api.domain.Facet> facetService) -
getFacetService
-
setFacetGroupFacetService
@Autowired public void setFacetGroupFacetService(FacetGroupFacetService<com.broadleafcommerce.search.api.domain.FacetGroupFacet> facetGroupFacetService) -
getFacetGroupFacetService
protected FacetGroupFacetService<com.broadleafcommerce.search.api.domain.FacetGroupFacet> getFacetGroupFacetService() -
setFacetGroupService
@Autowired public void setFacetGroupService(FacetGroupService<com.broadleafcommerce.search.api.domain.FacetGroup> facetGroupService) -
getFacetGroupService
protected FacetGroupService<com.broadleafcommerce.search.api.domain.FacetGroup> getFacetGroupService() -
setSettingsFacetGroupService
@Autowired public void setSettingsFacetGroupService(SettingsFacetGroupService<com.broadleafcommerce.search.api.domain.SettingsFacetGroup> settingsFacetGroupService) -
getSettingsFacetGroupService
protected SettingsFacetGroupService<com.broadleafcommerce.search.api.domain.SettingsFacetGroup> getSettingsFacetGroupService() -
setSearchSettingsUtils
-
getSearchSettingsUtils
-