Class SolrSynonymService

java.lang.Object
com.broadleafcommerce.search.provider.solr.AbstractBasicAuthAwareSolrProvider
com.broadleafcommerce.search.provider.solr.service.SolrSynonymService
All Implemented Interfaces:
com.broadleafcommerce.search.core.service.SynonymService, com.broadleafcommerce.search.provider.solr.SolrProvider, org.springframework.beans.factory.InitializingBean

public class SolrSynonymService extends com.broadleafcommerce.search.provider.solr.AbstractBasicAuthAwareSolrProvider implements com.broadleafcommerce.search.core.service.SynonymService, org.springframework.beans.factory.InitializingBean
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected Map<String,String>
     
    protected static final String
    The Solr translation path.

    Fields inherited from class com.broadleafcommerce.search.provider.solr.AbstractBasicAuthAwareSolrProvider

    CLUSTER_STATUS_PATH
  • Constructor Summary

    Constructors
    Constructor
    Description
    SolrSynonymService(org.apache.solr.client.solrj.SolrClient solrClient, com.broadleafcommerce.search.provider.solr.autoconfigure.BroadleafSolrProperties solrProperties, com.broadleafcommerce.search.provider.solr.SolrCollectionResolver collectionResolver, com.fasterxml.jackson.databind.ObjectMapper objectMapper, com.broadleafcommerce.search.core.service.SynonymProperties synonymProperties)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
     
    protected Optional<com.broadleafcommerce.search.core.service.domain.Synonym>
    convertToSingleSynonym(org.apache.solr.common.util.NamedList<Object> request, String word)
     
    protected List<com.broadleafcommerce.search.core.service.domain.Synonym>
    convertToSynonymList(org.apache.solr.common.util.NamedList<Object> response)
     
    void
    deleteSynonym(com.broadleafcommerce.search.core.service.domain.Synonym synonym, com.broadleafcommerce.search.api.type.IndexableType indexableType, String managedLanguage, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
     
    void
    deleteSynonym(com.broadleafcommerce.search.core.service.domain.Synonym synonym, String alias, com.broadleafcommerce.search.core.service.ManagedLanguage language)
     
    protected @NotNull List<com.broadleafcommerce.search.core.service.domain.Synonym>
    filterSynonyms(List<com.broadleafcommerce.search.core.service.domain.Synonym> synonyms, String query)
     
    protected Optional<com.broadleafcommerce.search.core.service.domain.Synonym>
    findSynonymDiff(com.broadleafcommerce.search.core.service.domain.Synonym synonym, String collection, String language)
     
    protected org.apache.solr.client.solrj.SolrRequest<org.apache.solr.client.solrj.response.UpdateResponse>
    getAddSynonymRequest(com.broadleafcommerce.search.core.service.ManagedLanguage language, Collection<com.broadleafcommerce.search.core.service.domain.Synonym> synonyms)
     
    List<com.broadleafcommerce.search.core.service.ManagedLanguage>
    getAvailableLanguages(String indexableType, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
     
    protected String
    getBackgroundAlias(com.broadleafcommerce.search.api.type.IndexableType indexableType, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
     
    protected com.broadleafcommerce.search.provider.solr.SolrCollectionResolver
     
    protected String
    getDeletePath(String language, com.broadleafcommerce.search.core.service.domain.Synonym synonym)
     
    protected org.apache.solr.client.solrj.SolrRequest<org.apache.solr.client.solrj.response.SimpleSolrResponse>
    getDeleteSynonymRequest(String language, com.broadleafcommerce.search.core.service.domain.Synonym synonym)
    Returns a Solr request to delete a synonym.
    protected com.fasterxml.jackson.databind.ObjectMapper
     
    protected String
    getPrimaryAlias(com.broadleafcommerce.search.api.type.IndexableType indexableType, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
     
    protected org.apache.solr.client.solrj.SolrRequest<org.apache.solr.client.solrj.response.SimpleSolrResponse>
     
    protected String
    getReadSynonymPath(String language, String word)
     
    protected org.apache.solr.client.solrj.SolrRequest<org.apache.solr.client.solrj.response.SimpleSolrResponse>
    getReadSynonymRequest(com.broadleafcommerce.search.core.service.ManagedLanguage language)
     
    protected String
     
    protected com.broadleafcommerce.search.core.service.SynonymProperties
     
    protected List<com.broadleafcommerce.search.core.service.SynonymProperties.LoadSynonymProperty>
     
    void
     
    protected com.broadleafcommerce.search.core.service.domain.Synonym
    lowercaseAndSanitizeSynonym(com.broadleafcommerce.search.core.service.domain.Synonym synonym)
    Lowercases the supplied synonym if SynonymProperties.isCaseSensitive() is false.
    protected Collection<com.broadleafcommerce.search.core.service.domain.Synonym>
    lowercaseAndSanitizeSynonyms(Collection<com.broadleafcommerce.search.core.service.domain.Synonym> synonyms)
    Lowercases and sanitizes the supplied synonyms.
    protected String
     
    protected @NotNull List<String>
    readAllLines(String filePath)
    Reads all lines from a file.
    Optional<com.broadleafcommerce.search.core.service.domain.Synonym>
    readSynonym(String word, com.broadleafcommerce.search.api.type.IndexableType indexableType, String managedLanguage, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
     
    Optional<com.broadleafcommerce.search.core.service.domain.Synonym>
    readSynonym(String word, String alias, String language)
     
    List<com.broadleafcommerce.search.core.service.domain.Synonym>
    readSynonyms(com.broadleafcommerce.search.api.type.IndexableType indexableType, String managedLanguage, cz.jirutka.rsql.parser.ast.Node filters, String query, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
     
    List<com.broadleafcommerce.search.core.service.domain.Synonym>
    readSynonyms(String alias, com.broadleafcommerce.search.core.service.ManagedLanguage language)
     
    protected List<com.broadleafcommerce.search.core.service.domain.Synonym>
    readSynonymsFile(com.broadleafcommerce.search.core.service.SynonymProperties.LoadSynonymProperty property)
     
    com.broadleafcommerce.search.core.service.ManagedLanguage
    resolveManagedLanguage(com.broadleafcommerce.search.api.type.IndexableType indexableType, String managedLanguage, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
     
    protected String
    sanitizeSynonymString(String string, boolean urlEncode)
    Sanitize the synonym string by removing any restricted characters.
    protected String
    toSynonymPayload(Collection<com.broadleafcommerce.search.core.service.domain.Synonym> synonyms)
     
    protected void
    tryLoadingSynonyms(com.broadleafcommerce.search.core.service.SynonymProperties.LoadSynonymProperty property, String alias, boolean failOnError, List<com.broadleafcommerce.search.core.service.domain.Synonym> synonyms, Set<String> aliasesToReload)
     
    com.broadleafcommerce.search.core.service.domain.Synonym
    updateSynonym(com.broadleafcommerce.search.core.service.domain.Synonym synonym, com.broadleafcommerce.search.api.type.IndexableType indexableType, String managedLanguage, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
     
    List<com.broadleafcommerce.search.core.service.domain.Synonym>
    updateSynonyms(Collection<com.broadleafcommerce.search.core.service.domain.Synonym> synonyms, com.broadleafcommerce.search.api.type.IndexableType indexableType, String managedLanguage, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
     
    List<com.broadleafcommerce.search.core.service.domain.Synonym>
    updateSynonyms(Collection<com.broadleafcommerce.search.core.service.domain.Synonym> synonyms, String alias, com.broadleafcommerce.search.core.service.ManagedLanguage language, boolean reloadCollection)
     
    protected String
    urlEncode(String string)
     

    Methods inherited from class com.broadleafcommerce.search.provider.solr.AbstractBasicAuthAwareSolrProvider

    determineCollectionsFromAliases, getSolrBasicAuthPassword, getSolrBasicAuthUser, getSolrClient, reloadCollections, reloadCollectionsFromAliases, setBasicAuthCredentialsIfNecessary

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

  • Constructor Details

    • SolrSynonymService

      public SolrSynonymService(org.apache.solr.client.solrj.SolrClient solrClient, com.broadleafcommerce.search.provider.solr.autoconfigure.BroadleafSolrProperties solrProperties, com.broadleafcommerce.search.provider.solr.SolrCollectionResolver collectionResolver, com.fasterxml.jackson.databind.ObjectMapper objectMapper, @Nullable com.broadleafcommerce.search.core.service.SynonymProperties synonymProperties)
  • Method Details

    • readSynonyms

      public List<com.broadleafcommerce.search.core.service.domain.Synonym> readSynonyms(com.broadleafcommerce.search.api.type.IndexableType indexableType, String managedLanguage, @Nullable cz.jirutka.rsql.parser.ast.Node filters, @Nullable String query, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Specified by:
      readSynonyms in interface com.broadleafcommerce.search.core.service.SynonymService
    • filterSynonyms

      @NotNull protected @NotNull List<com.broadleafcommerce.search.core.service.domain.Synonym> filterSynonyms(List<com.broadleafcommerce.search.core.service.domain.Synonym> synonyms, String query)
    • readSynonym

      public Optional<com.broadleafcommerce.search.core.service.domain.Synonym> readSynonym(String word, com.broadleafcommerce.search.api.type.IndexableType indexableType, String managedLanguage, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Specified by:
      readSynonym in interface com.broadleafcommerce.search.core.service.SynonymService
    • readSynonym

      public Optional<com.broadleafcommerce.search.core.service.domain.Synonym> readSynonym(String word, String alias, String language)
    • readSynonyms

      public List<com.broadleafcommerce.search.core.service.domain.Synonym> readSynonyms(String alias, com.broadleafcommerce.search.core.service.ManagedLanguage language)
    • updateSynonym

      public com.broadleafcommerce.search.core.service.domain.Synonym updateSynonym(com.broadleafcommerce.search.core.service.domain.Synonym synonym, com.broadleafcommerce.search.api.type.IndexableType indexableType, String managedLanguage, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Specified by:
      updateSynonym in interface com.broadleafcommerce.search.core.service.SynonymService
    • updateSynonyms

      public List<com.broadleafcommerce.search.core.service.domain.Synonym> updateSynonyms(Collection<com.broadleafcommerce.search.core.service.domain.Synonym> synonyms, com.broadleafcommerce.search.api.type.IndexableType indexableType, String managedLanguage, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Specified by:
      updateSynonyms in interface com.broadleafcommerce.search.core.service.SynonymService
    • updateSynonyms

      public List<com.broadleafcommerce.search.core.service.domain.Synonym> updateSynonyms(Collection<com.broadleafcommerce.search.core.service.domain.Synonym> synonyms, String alias, com.broadleafcommerce.search.core.service.ManagedLanguage language, boolean reloadCollection)
    • deleteSynonym

      public void deleteSynonym(com.broadleafcommerce.search.core.service.domain.Synonym synonym, com.broadleafcommerce.search.api.type.IndexableType indexableType, String managedLanguage, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Specified by:
      deleteSynonym in interface com.broadleafcommerce.search.core.service.SynonymService
    • deleteSynonym

      public void deleteSynonym(com.broadleafcommerce.search.core.service.domain.Synonym synonym, String alias, com.broadleafcommerce.search.core.service.ManagedLanguage language)
    • getAvailableLanguages

      public List<com.broadleafcommerce.search.core.service.ManagedLanguage> getAvailableLanguages(String indexableType, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Specified by:
      getAvailableLanguages in interface com.broadleafcommerce.search.core.service.SynonymService
    • getPrimaryAlias

      protected String getPrimaryAlias(com.broadleafcommerce.search.api.type.IndexableType indexableType, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
    • getBackgroundAlias

      protected String getBackgroundAlias(com.broadleafcommerce.search.api.type.IndexableType indexableType, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
    • getSynonymPropertyConfig

      protected List<com.broadleafcommerce.search.core.service.SynonymProperties.LoadSynonymProperty> getSynonymPropertyConfig()
    • convertToSingleSynonym

      protected Optional<com.broadleafcommerce.search.core.service.domain.Synonym> convertToSingleSynonym(org.apache.solr.common.util.NamedList<Object> request, String word)
    • findSynonymDiff

      protected Optional<com.broadleafcommerce.search.core.service.domain.Synonym> findSynonymDiff(com.broadleafcommerce.search.core.service.domain.Synonym synonym, String collection, String language)
    • resolveManagedLanguage

      public com.broadleafcommerce.search.core.service.ManagedLanguage resolveManagedLanguage(com.broadleafcommerce.search.api.type.IndexableType indexableType, String managedLanguage, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
    • afterPropertiesSet

      public void afterPropertiesSet() throws Exception
      Specified by:
      afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
      Throws:
      Exception
    • loadSynonyms

      public void loadSynonyms()
      Specified by:
      loadSynonyms in interface com.broadleafcommerce.search.core.service.SynonymService
    • tryLoadingSynonyms

      protected void tryLoadingSynonyms(com.broadleafcommerce.search.core.service.SynonymProperties.LoadSynonymProperty property, String alias, boolean failOnError, List<com.broadleafcommerce.search.core.service.domain.Synonym> synonyms, Set<String> aliasesToReload)
    • readSynonymsFile

      protected List<com.broadleafcommerce.search.core.service.domain.Synonym> readSynonymsFile(com.broadleafcommerce.search.core.service.SynonymProperties.LoadSynonymProperty property)
    • readAllLines

      @NotNull protected @NotNull List<String> readAllLines(String filePath) throws IOException
      Reads all lines from a file.
      Returns:
      the lines in the file
      Throws:
      IOException
    • getSynonymPath

      protected String getSynonymPath(String language)
    • getDeletePath

      protected String getDeletePath(String language, com.broadleafcommerce.search.core.service.domain.Synonym synonym)
    • getReadSynonymPath

      protected String getReadSynonymPath(String language, String word)
    • getReadSingleSynonymRequest

      protected org.apache.solr.client.solrj.SolrRequest<org.apache.solr.client.solrj.response.SimpleSolrResponse> getReadSingleSynonymRequest(String word, String language)
    • getReadSynonymRequest

      protected org.apache.solr.client.solrj.SolrRequest<org.apache.solr.client.solrj.response.SimpleSolrResponse> getReadSynonymRequest(com.broadleafcommerce.search.core.service.ManagedLanguage language)
    • getDeleteSynonymRequest

      protected org.apache.solr.client.solrj.SolrRequest<org.apache.solr.client.solrj.response.SimpleSolrResponse> getDeleteSynonymRequest(String language, com.broadleafcommerce.search.core.service.domain.Synonym synonym)
      Returns a Solr request to delete a synonym. Note that this calls getDeletePath(String, Synonym), which also URL encodes Synonym.getWord()
      Parameters:
      language - The managed language to delete the synonym from
      synonym - The synonym to delete
      Returns:
      The Solr request to delete the synonym
    • getAddSynonymRequest

      protected org.apache.solr.client.solrj.SolrRequest<org.apache.solr.client.solrj.response.UpdateResponse> getAddSynonymRequest(com.broadleafcommerce.search.core.service.ManagedLanguage language, Collection<com.broadleafcommerce.search.core.service.domain.Synonym> synonyms)
    • convertToSynonymList

      protected List<com.broadleafcommerce.search.core.service.domain.Synonym> convertToSynonymList(org.apache.solr.common.util.NamedList<Object> response)
    • lowercaseAndSanitizeSynonyms

      protected Collection<com.broadleafcommerce.search.core.service.domain.Synonym> lowercaseAndSanitizeSynonyms(Collection<com.broadleafcommerce.search.core.service.domain.Synonym> synonyms)
      Lowercases and sanitizes the supplied synonyms. If SynonymProperties.isCaseSensitive() is true, only sanitizes the synonyms.
      Parameters:
      synonyms - the synonyms to lowercase
      Returns:
      the synonym with the word and synonyms lowercased if case insensitive
    • lowercaseAndSanitizeSynonym

      protected com.broadleafcommerce.search.core.service.domain.Synonym lowercaseAndSanitizeSynonym(@Nullable com.broadleafcommerce.search.core.service.domain.Synonym synonym)
      Lowercases the supplied synonym if SynonymProperties.isCaseSensitive() is false. If case sensitive, returns the synonym as-is.
      Parameters:
      synonym - the synonym to lowercase
      Returns:
      the synonym with the word and synonyms lowercased
    • toSynonymPayload

      protected String toSynonymPayload(Collection<com.broadleafcommerce.search.core.service.domain.Synonym> synonyms)
    • lowercaseString

      protected String lowercaseString(String string)
    • sanitizeSynonymString

      protected String sanitizeSynonymString(String string, boolean urlEncode)
      Sanitize the synonym string by removing any restricted characters. Optionally URL encode the synonym string.
      Parameters:
      string - the synonym string to sanitize
      Returns:
    • urlEncode

      protected String urlEncode(String string)
    • getSynonymProperties

      protected com.broadleafcommerce.search.core.service.SynonymProperties getSynonymProperties()
    • getObjectMapper

      protected com.fasterxml.jackson.databind.ObjectMapper getObjectMapper()
    • getCollectionResolver

      protected com.broadleafcommerce.search.provider.solr.SolrCollectionResolver getCollectionResolver()