Class DefaultSolrQueryConverter
- java.lang.Object
-
- de.hybris.platform.solrfacetsearch.search.impl.DefaultSolrQueryConverter
-
- All Implemented Interfaces:
SolrQueryConverter,org.springframework.beans.factory.Aware,org.springframework.beans.factory.BeanFactoryAware
public class DefaultSolrQueryConverter extends java.lang.Object implements SolrQueryConverter, org.springframework.beans.factory.BeanFactoryAware
Default Implementation ofSolrQueryConverter
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classDefaultSolrQueryConverter.FacetSortstatic classDefaultSolrQueryConverter.IndexedFacetInfo
-
Field Summary
Fields Modifier and Type Field Description protected static java.lang.StringALL_QUERYprotected static SearchQuery.OperatorDEFAULT_FIELD_OPERATORprotected static intDEFAULT_LIMIT
-
Constructor Summary
Constructors Constructor Description DefaultSolrQueryConverter()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidaddFacetFields(org.apache.solr.client.solrj.SolrQuery solrQuery, SearchQuery solrSearchQuery)protected voidaddFacetFields(org.apache.solr.client.solrj.SolrQuery solrQuery, SearchQuery solrSearchQuery, FieldNameProvider solrFieldNameProvider)protected voidaddFacetFields(org.apache.solr.client.solrj.SolrQuery solrQuery, java.util.Map<java.lang.String,DefaultSolrQueryConverter.IndexedFacetInfo> facetInfoMap)protected voidaddSolrParams(org.apache.solr.client.solrj.SolrQuery solrQuery, SearchQuery solrSearchQuery)protected org.apache.solr.client.solrj.SolrQueryapplyPostProcessorsInOrder(org.apache.solr.client.solrj.SolrQuery solrQuery, SearchQuery solrSearchQuery)protected java.lang.StringbuildQuery(java.lang.String[] queries, SearchQuery searchQuery)protected voidcheckQuery(SearchQuery solrSearchQuery)protected java.lang.Stringcombine(java.lang.String[] values, java.lang.String separator)protected java.lang.String[]convertCoupledQueryFields(SearchQuery searchQuery, java.util.List<CoupledQueryField> coupledQueryFields)protected java.lang.String[]convertQueryFields(java.util.List<QueryField> queryFields, java.util.Map<java.lang.String,DefaultSolrQueryConverter.IndexedFacetInfo> facetInfoMap)Converts all query fields to the solr query string.protected java.lang.String[]convertRawQueries(SearchQuery searchQuery, java.util.List<RawQuery> rawQueries)org.apache.solr.client.solrj.SolrQueryconvertSolrQuery(SearchQuery searchQuery)ConvertsSearchQueryinstance into validSolrQuery.protected org.apache.solr.client.solrj.SolrQuerycreateSolrQuery(SearchQuery searchQuery)protected java.lang.Stringescape(java.lang.String text)org.springframework.beans.factory.BeanFactorygetBeanFactory()java.lang.IntegergetDefaultLimit()protected java.util.Map<java.lang.String,DefaultSolrQueryConverter.IndexedFacetInfo>getFacetInfo(SearchQuery searchQuery)Retrieve info about the facet related to the searchQueryFacetSearchContextFactory<FacetSearchContext>getFacetSearchContextFactory()DefaultSolrQueryConverter.FacetSortgetFacetSort()protected FieldNameTranslatorgetFieldNameTranslator()SearchQuery.OperatorgetFieldOperator()protected IndexedTypeFieldsValuesProvidergetFieldsValuesProvider(IndexedType indexType)java.lang.StringgetForbiddenChar()Converter<SearchQueryConverterData,org.apache.solr.client.solrj.SolrQuery>getLegacyFacetSearchQueryConverter()java.util.List<SolrQueryPostProcessor>getQueryPostProcessors()protected java.util.List<CoupledQueryField>includeCatalogVersionFields(SearchQuery searchQuery)Includes the catalogId and catalogVersion query fields in the SOLR query, based on theSearchQuery.getCatalogVersions().protected booleanisFilterQueryField(QueryField queryField, java.util.Map<java.lang.String,DefaultSolrQueryConverter.IndexedFacetInfo> facetInfoMap)Test if the queryField part of qfprotected java.lang.StringprepareQueryField(QueryField field)protected java.util.List<QueryField>prepareQueryFields(SearchQuery searchQuery)protected voidprepareQueryFieldsFromFacetValues(SearchQuery searchQuery, java.util.Map<java.lang.String,QueryField> queryFields)protected voidprepareQueryFieldsFromQueries(SearchQuery searchQuery, java.util.Map<java.lang.String,QueryField> queryFields)protected SearchQuery.OperatorresolveOperator(SearchQuery searchQuery)voidsetBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory)voidsetDefaultLimit(java.lang.Integer defaultLimit)voidsetFacetSearchContextFactory(FacetSearchContextFactory<FacetSearchContext> facetSearchContextFactory)voidsetFacetSort(DefaultSolrQueryConverter.FacetSort facetSort)voidsetFieldNameTranslator(FieldNameTranslator fieldNameTranslator)voidsetFieldOperator(SearchQuery.Operator fieldOperator)voidsetForbiddenChar(java.lang.String forbiddenChar)voidsetLegacyFacetSearchQueryConverter(Converter<SearchQueryConverterData,org.apache.solr.client.solrj.SolrQuery> legacyFacetSearchQueryConverter)voidsetQueryPostProcessors(java.util.List<SolrQueryPostProcessor> queryPostProcessors)protected voidsplitQueryFields(java.util.List<QueryField> source, java.util.List<QueryField> queries, java.util.List<QueryField> filterQueries, java.util.Map<java.lang.String,DefaultSolrQueryConverter.IndexedFacetInfo> facetInfoMap)Manage the OR and AND operator in a multi-select search
-
-
-
Field Detail
-
ALL_QUERY
protected static final java.lang.String ALL_QUERY
- See Also:
- Constant Field Values
-
DEFAULT_FIELD_OPERATOR
protected static final SearchQuery.Operator DEFAULT_FIELD_OPERATOR
-
DEFAULT_LIMIT
protected static final int DEFAULT_LIMIT
- See Also:
- Constant Field Values
-
-
Method Detail
-
getFieldNameTranslator
protected FieldNameTranslator getFieldNameTranslator()
-
setFieldNameTranslator
public void setFieldNameTranslator(FieldNameTranslator fieldNameTranslator)
-
getQueryPostProcessors
public java.util.List<SolrQueryPostProcessor> getQueryPostProcessors()
-
setQueryPostProcessors
public void setQueryPostProcessors(java.util.List<SolrQueryPostProcessor> queryPostProcessors)
-
getFacetSort
public DefaultSolrQueryConverter.FacetSort getFacetSort()
-
setFacetSort
public void setFacetSort(DefaultSolrQueryConverter.FacetSort facetSort)
-
getFieldOperator
public SearchQuery.Operator getFieldOperator()
-
setFieldOperator
public void setFieldOperator(SearchQuery.Operator fieldOperator)
-
getDefaultLimit
public java.lang.Integer getDefaultLimit()
-
setDefaultLimit
public void setDefaultLimit(java.lang.Integer defaultLimit)
-
getForbiddenChar
public java.lang.String getForbiddenChar()
-
setForbiddenChar
public void setForbiddenChar(java.lang.String forbiddenChar)
-
getFacetSearchContextFactory
public FacetSearchContextFactory<FacetSearchContext> getFacetSearchContextFactory()
-
setFacetSearchContextFactory
public void setFacetSearchContextFactory(FacetSearchContextFactory<FacetSearchContext> facetSearchContextFactory)
-
getLegacyFacetSearchQueryConverter
public Converter<SearchQueryConverterData,org.apache.solr.client.solrj.SolrQuery> getLegacyFacetSearchQueryConverter()
-
setLegacyFacetSearchQueryConverter
public void setLegacyFacetSearchQueryConverter(Converter<SearchQueryConverterData,org.apache.solr.client.solrj.SolrQuery> legacyFacetSearchQueryConverter)
-
getBeanFactory
public org.springframework.beans.factory.BeanFactory getBeanFactory()
-
setBeanFactory
public void setBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory)
- Specified by:
setBeanFactoryin interfaceorg.springframework.beans.factory.BeanFactoryAware
-
convertSolrQuery
public org.apache.solr.client.solrj.SolrQuery convertSolrQuery(SearchQuery searchQuery) throws FacetSearchException
Description copied from interface:SolrQueryConverterConvertsSearchQueryinstance into validSolrQuery.- Specified by:
convertSolrQueryin interfaceSolrQueryConverter- Throws:
FacetSearchException
-
createSolrQuery
protected org.apache.solr.client.solrj.SolrQuery createSolrQuery(SearchQuery searchQuery)
-
includeCatalogVersionFields
protected java.util.List<CoupledQueryField> includeCatalogVersionFields(SearchQuery searchQuery)
Includes the catalogId and catalogVersion query fields in the SOLR query, based on theSearchQuery.getCatalogVersions().- Returns:
- List of
CoupledQueryField
-
buildQuery
protected java.lang.String buildQuery(java.lang.String[] queries, SearchQuery searchQuery)
-
splitQueryFields
protected void splitQueryFields(java.util.List<QueryField> source, java.util.List<QueryField> queries, java.util.List<QueryField> filterQueries, java.util.Map<java.lang.String,DefaultSolrQueryConverter.IndexedFacetInfo> facetInfoMap)
Manage the OR and AND operator in a multi-select search- Parameters:
source-queries-filterQueries-facetInfoMap-
-
getFacetInfo
protected java.util.Map<java.lang.String,DefaultSolrQueryConverter.IndexedFacetInfo> getFacetInfo(SearchQuery searchQuery)
Retrieve info about the facet related to the searchQuery- Parameters:
searchQuery-- Returns:
- Map of IndexedFacetInfo
-
escape
protected java.lang.String escape(java.lang.String text)
-
isFilterQueryField
protected boolean isFilterQueryField(QueryField queryField, java.util.Map<java.lang.String,DefaultSolrQueryConverter.IndexedFacetInfo> facetInfoMap)
Test if the queryField part of qf- Parameters:
queryField-facetInfoMap-- Returns:
- true if the queryField is part of qf query
-
checkQuery
protected void checkQuery(SearchQuery solrSearchQuery) throws FacetSearchException
- Throws:
FacetSearchException
-
convertQueryFields
protected java.lang.String[] convertQueryFields(java.util.List<QueryField> queryFields, java.util.Map<java.lang.String,DefaultSolrQueryConverter.IndexedFacetInfo> facetInfoMap)
Converts all query fields to the solr query string. Example: [hardware:cpu, hardware:intel, manufacture:sony(OR), manufacture:ibm(OR)] --> [(hardware:(cpu AND intel)) AND (manufacture:(sony OR ibm))]- Returns:
- converted query string
-
convertCoupledQueryFields
protected java.lang.String[] convertCoupledQueryFields(SearchQuery searchQuery, java.util.List<CoupledQueryField> coupledQueryFields)
-
convertRawQueries
protected java.lang.String[] convertRawQueries(SearchQuery searchQuery, java.util.List<RawQuery> rawQueries)
-
prepareQueryField
protected java.lang.String prepareQueryField(QueryField field)
-
getFieldsValuesProvider
protected IndexedTypeFieldsValuesProvider getFieldsValuesProvider(IndexedType indexType)
-
addFacetFields
protected void addFacetFields(org.apache.solr.client.solrj.SolrQuery solrQuery, SearchQuery solrSearchQuery, FieldNameProvider solrFieldNameProvider)
-
addFacetFields
protected void addFacetFields(org.apache.solr.client.solrj.SolrQuery solrQuery, SearchQuery solrSearchQuery)
-
addFacetFields
protected void addFacetFields(org.apache.solr.client.solrj.SolrQuery solrQuery, java.util.Map<java.lang.String,DefaultSolrQueryConverter.IndexedFacetInfo> facetInfoMap)
-
addSolrParams
protected void addSolrParams(org.apache.solr.client.solrj.SolrQuery solrQuery, SearchQuery solrSearchQuery)
-
applyPostProcessorsInOrder
protected org.apache.solr.client.solrj.SolrQuery applyPostProcessorsInOrder(org.apache.solr.client.solrj.SolrQuery solrQuery, SearchQuery solrSearchQuery)
-
combine
protected java.lang.String combine(java.lang.String[] values, java.lang.String separator)
-
prepareQueryFields
protected java.util.List<QueryField> prepareQueryFields(SearchQuery searchQuery)
-
prepareQueryFieldsFromFacetValues
protected void prepareQueryFieldsFromFacetValues(SearchQuery searchQuery, java.util.Map<java.lang.String,QueryField> queryFields)
-
prepareQueryFieldsFromQueries
protected void prepareQueryFieldsFromQueries(SearchQuery searchQuery, java.util.Map<java.lang.String,QueryField> queryFields)
-
resolveOperator
protected SearchQuery.Operator resolveOperator(SearchQuery searchQuery)
-
-