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 engine
R - 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 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 interface SearchService<Q>
      Parameters:
      searchRequest - The query information to search by
      page - The page to retrieve
      context - 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
      com.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 by
      page - The page to retrieve
      context - 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 response
      searchRequest - The search request
      fieldDefinitions - The field definitions used on the original query
      page - The page to retrieve
      context - The context information surrounding sandboxing/multitenant state
      fieldDefinitions - 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

      protected void attachFacetsToFieldDefinitions(List<com.broadleafcommerce.search.api.domain.FieldDefinition> fieldDefinitions, String type, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
    • determineFacetsForSearchRequest

      protected List<com.broadleafcommerce.search.api.domain.Facet> determineFacetsForSearchRequest(List<com.broadleafcommerce.search.api.domain.FieldDefinition> fieldDefinitions, String indexableType, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
    • determineAvailableFacetsForFacetGroup

      protected List<com.broadleafcommerce.search.api.domain.Facet> determineAvailableFacetsForFacetGroup(com.broadleafcommerce.search.api.domain.SettingsFacetGroup settingsFacetGroup, String type, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
    • getQueryBuilder

      protected QueryBuilder<Q> getQueryBuilder()
    • getResponseParser

      protected ResponseParser<R,com.broadleafcommerce.search.api.domain.SearchResponse> getResponseParser()
    • getSearchProvider

      protected com.broadleafcommerce.search.provider.SearchProvider<Q,R> getSearchProvider()
    • getFieldDefinitionService

      protected FieldDefinitionService<com.broadleafcommerce.search.api.domain.FieldDefinition> getFieldDefinitionService()
    • getValidator

      protected SearchValidator getValidator()
    • setFacetService

      @Autowired public void setFacetService(FacetService<com.broadleafcommerce.search.api.domain.Facet> facetService)
    • getFacetService

      protected FacetService<com.broadleafcommerce.search.api.domain.Facet> 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

      @Autowired public void setSearchSettingsUtils(SearchSettingsUtils searchSettingsUtils)
    • getSearchSettingsUtils

      protected SearchSettingsUtils getSearchSettingsUtils()