Class 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.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      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 FieldDefinitionService<com.broadleafcommerce.search.api.domain.FieldDefinition> getFieldDefinitionService()  
      protected QueryBuilder<Q> getQueryBuilder()  
      protected ResponseParser<R,​com.broadleafcommerce.search.api.domain.SearchResponse> getResponseParser()  
      protected com.broadleafcommerce.search.provider.SearchProvider<Q,​R> getSearchProvider()  
      protected SearchValidator getValidator()  
      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.
    • Constructor Detail

      • 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 Detail

      • 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.
      • 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()