Package org.alfresco.service.cmr.search
Class SearchParameters
- java.lang.Object
-
- org.alfresco.service.cmr.search.SearchParameters
-
- All Implemented Interfaces:
BasicSearchParameters
@AlfrescoPublicApi public class SearchParameters extends java.lang.Object implements BasicSearchParameters
This class provides parameters to define a search. TODO - paging of results page number and page size - paging isolation - REPEATABLE READ, READ COMMITTED, may SEE ONCE tracking node refs in previous result sets - how long repeatable read may be held - limit by the number of permission evaluations- Author:
- Andy Hind
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
SearchParameters.FieldFacet
static class
SearchParameters.FieldFacetMethod
static class
SearchParameters.FieldFacetSort
static class
SearchParameters.Operator
An emum defining if the default action is to "and" or "or" unspecified components in the query register.static class
SearchParameters.SortDefinition
A helper class for sort definition.
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
ALTERNATIVE_DICTIONARY
A parameter that can be passed to Solr to indicate an alternative dictionary should be used.static SearchParameters.Operator
AND
ANDstatic SearchParameters.Operator
OR
ORstatic SearchParameters.SortDefinition
SORT_IN_DOCUMENT_ORDER_ASCENDING
Sort in the order docs were added to the index - oldest docs firststatic SearchParameters.SortDefinition
SORT_IN_DOCUMENT_ORDER_DESCENDING
Sort in the reverse order docs were added to the index - new/updateed docs firststatic SearchParameters.SortDefinition
SORT_IN_SCORE_ORDER_ASCENDING
Sort in ascending scorestatic SearchParameters.SortDefinition
SORT_IN_SCORE_ORDER_DESCENDING
Sort in descending score order
-
Constructor Summary
Constructors Constructor Description SearchParameters()
Default constructorSearchParameters(QueryOptions options)
Construct from Query Options
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addAllAttribute(java.lang.String attribute)
Add a field for ALL expansionvoid
addExtraParameter(java.lang.String name, java.lang.String value)
void
addFacetQuery(java.lang.String facetQuery)
void
addFieldFacet(SearchParameters.FieldFacet fieldFacet)
void
addFilterQuery(java.lang.String filterQuery)
void
addLocale(java.util.Locale locale)
Add a locale to include for multi-lingual text searches.void
addPivots(java.util.List<java.lang.String> pivotFields)
void
addQueryParameterDefinition(QueryParameterDefinition queryParameterDefinition)
Add parameter definitions for the query - used to parameterise the query stringjava.lang.String
addQueryTemplate(java.lang.String name, java.lang.String template)
Add/replace a query template Not all languages support query templatesvoid
addSort(java.lang.String field, boolean ascending)
Add a sort to the query (for those query languages that do not support it directly) The first sort added is treated as primary, the second as secondary etc.void
addSort(SearchParameters.SortDefinition sortDefinition)
Add a sort definition.void
addStore(StoreRef store)
Set the stores to be supported - currently there can be only one.void
addTextAttribute(java.lang.String attribute)
Add a field for TEXT expansionSearchParameters
copy()
boolean
equals(java.lang.Object obj)
boolean
excludeDataInTheCurrentTransaction()
Is data in the current transaction excluded from the search.void
excludeDataInTheCurrentTransaction(boolean excludeDataInTheCurrentTransaction)
If true, any data in the current transaction will be ignored in the search.java.util.Set<java.lang.String>
getAllAttributes()
Get the text attributes used for ALL expansion.java.lang.String
getDefaultFieldName()
SearchParameters.Operator
getDefaultFTSFieldOperator()
As getDefaultFTSConnective() but for field groupsSearchParameters.Operator
getDefaultFTSOperator()
Get the default connective used when OR and AND are not specified for the FTS contains() function.SearchParameters.Operator
getDefaultOperator()
Get the default operator for query elements when they are not explicit in the query.boolean
getExcludeTenantFilter()
java.util.Map<java.lang.String,java.lang.String>
getExtraParameters()
java.util.List<java.lang.String>
getFacetQueries()
java.util.List<SearchParameters.FieldFacet>
getFieldFacets()
java.util.List<java.lang.String>
getFilterQueries()
GeneralHighlightParameters
getHighlight()
Gets the parameters used for search highlighingIntervalParameters
getInterval()
java.lang.String
getLanguage()
Get the search languageint
getLimit()
If limiting the result set in some way, get the limiting value used.LimitBy
getLimitBy()
Get how the result set should be limitedjava.util.List<java.util.Locale>
getLocales()
Get the locales used for multi-lingual text searches.int
getMaxItems()
Get the max number of rows for the result set 0 or less is unlimitedint
getMaxPermissionChecks()
long
getMaxPermissionCheckTimeMillis()
java.lang.Integer
getMaxRawResultSetSizeForInMemorySort()
MLAnalysisMode
getMlAnalaysisMode()
The way in which multilingual fields are treated durig a search.java.lang.String
getNamespace()
Get the default namespace.PermissionEvaluationMode
getPermissionEvaluation()
Get when permissions are evaluated.java.util.List<java.util.List<java.lang.String>>
getPivots()
java.lang.String
getQuery()
Get the query.QueryConsistency
getQueryConsistency()
java.util.ArrayList<QueryParameterDefinition>
getQueryParameterDefinitions()
Get the query parameters that apply to this query.java.util.Map<java.lang.String,java.lang.String>
getQueryTemplates()
Get the query templatesjava.util.List<RangeParameters>
getRanges()
java.lang.String
getSearchTerm()
java.lang.Long
getSinceTxId()
If not null, then the search should only include results from transactions aftersinceTxId
.int
getSkipCount()
Get the skip count - the number of rows to skip at the start of the query.java.util.ArrayList<SearchParameters.SortDefinition>
getSortDefinitions()
Get the sort definitions that apply to this query.java.util.Locale
getSortLocale()
java.util.List<StatsRequestParameters>
getStats()
java.util.ArrayList<StoreRef>
getStores()
Get the stores in which this query should find results.java.util.Set<java.lang.String>
getTextAttributes()
Get the text attributes used for text expansion.java.lang.String
getTimezone()
java.lang.Boolean
getUseInMemorySort()
boolean
hasFaceting()
Checks if faceting is used as part of the query, Search-347.int
hashCode()
boolean
isBulkFetchEnabled()
boolean
isIncludeMetadata()
boolean
isSpellCheck()
void
setBulkFetchEnabled(boolean isBulkFetchEnabled)
void
setDefaultFieldName(java.lang.String defaultFieldName)
void
setDefaultFTSFieldConnective(SearchParameters.Operator defaultFTSFieldOperator)
As setDefaultFTSConnective() but for field groupsvoid
setDefaultFTSOperator(SearchParameters.Operator defaultFTSOperator)
Set the default connective used when OR and AND are not specified for the FTS contains() function.void
setDefaultOperator(SearchParameters.Operator defaultOperator)
Set the default operator for query elements when they are not explicit in the query.void
setExcludeTenantFilter(boolean excludeTenantFilter)
void
setHighlight(GeneralHighlightParameters highlight)
Sets parameters used for search highlighingvoid
setIncludeMetadata(boolean includeMetadata)
void
setInterval(IntervalParameters interval)
Sets parameters used for Intervalsvoid
setLanguage(java.lang.String language)
Set the query language.void
setLimit(int limit)
If limiting the result set in some way, set the limiting value used.void
setLimitBy(LimitBy limitBy)
Set how the result set should be limited.void
setMaxItems(int maxItems)
Set the max number of rows for the result set.void
setMaxPermissionChecks(int maxPermissionChecks)
void
setMaxPermissionCheckTimeMillis(long maxPermissionCheckTimeMillis)
void
setMaxRawResultSetSizeForInMemorySort(java.lang.Integer maxRawResultSetSizeForInMemorySort)
void
setMlAnalaysisMode(MLAnalysisMode mlAnalaysisMode)
Set the way in which multilingual fields are treated durig a search.void
setNamespace(java.lang.String namespace)
Set the default namespacevoid
setPermissionEvaluation(PermissionEvaluationMode permissionEvaluation)
Set when permissions are evaluated.void
setQuery(java.lang.String query)
Set the query string.void
setQueryConsistency(QueryConsistency queryConsistency)
void
setRanges(java.util.List<RangeParameters> ranges)
void
setSearchTerm(java.lang.String searchTerm)
void
setSinceTxId(java.lang.Long sinceTxId)
If not null, then the search should only include results from transactions aftersinceTxId
.void
setSkipCount(int skipCount)
Set the skip count - the number of rows to skip at the start of the query.void
setSpellCheck(boolean spellCheck)
void
setStats(java.util.List<StatsRequestParameters> stats)
void
setTimezone(java.lang.String timezone)
Override the default TimeZone (UTC)void
setUseInMemorySort(java.lang.Boolean useInMemorySort)
java.lang.String
toAuditString()
java.lang.String
toString()
boolean
usePostSort(int length, boolean useInMemorySortDefault, int maxRawResultSetSizeForInMemorySortDefault)
-
-
-
Field Detail
-
SORT_IN_DOCUMENT_ORDER_ASCENDING
public static final SearchParameters.SortDefinition SORT_IN_DOCUMENT_ORDER_ASCENDING
Sort in the order docs were added to the index - oldest docs first
-
SORT_IN_DOCUMENT_ORDER_DESCENDING
public static final SearchParameters.SortDefinition SORT_IN_DOCUMENT_ORDER_DESCENDING
Sort in the reverse order docs were added to the index - new/updateed docs first
-
SORT_IN_SCORE_ORDER_ASCENDING
public static final SearchParameters.SortDefinition SORT_IN_SCORE_ORDER_ASCENDING
Sort in ascending score
-
SORT_IN_SCORE_ORDER_DESCENDING
public static final SearchParameters.SortDefinition SORT_IN_SCORE_ORDER_DESCENDING
Sort in descending score order
-
OR
public static final SearchParameters.Operator OR
OR
-
AND
public static final SearchParameters.Operator AND
AND
-
ALTERNATIVE_DICTIONARY
public static final java.lang.String ALTERNATIVE_DICTIONARY
A parameter that can be passed to Solr to indicate an alternative dictionary should be used.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
SearchParameters
public SearchParameters()
Default constructor
-
SearchParameters
public SearchParameters(QueryOptions options)
Construct from Query Options- Parameters:
options
- QueryOptions
-
-
Method Detail
-
copy
public SearchParameters copy()
-
getLanguage
public java.lang.String getLanguage()
Get the search language- Specified by:
getLanguage
in interfaceBasicSearchParameters
- Returns:
- - string id of search language
-
getQuery
public java.lang.String getQuery()
Get the query.- Specified by:
getQuery
in interfaceBasicSearchParameters
- Returns:
- - the query string
-
setHighlight
public void setHighlight(GeneralHighlightParameters highlight)
Sets parameters used for search highlighing- Parameters:
highlight
- GeneralHighlightParameters
-
getStats
public java.util.List<StatsRequestParameters> getStats()
-
setStats
public void setStats(java.util.List<StatsRequestParameters> stats)
-
getInterval
public IntervalParameters getInterval()
-
setInterval
public void setInterval(IntervalParameters interval)
Sets parameters used for Intervals- Parameters:
interval
- IntervalParameters
-
getRanges
public java.util.List<RangeParameters> getRanges()
-
setRanges
public void setRanges(java.util.List<RangeParameters> ranges)
-
setLanguage
public void setLanguage(java.lang.String language)
Set the query language.- Parameters:
language
- - the query language.
-
getTimezone
public java.lang.String getTimezone()
-
setTimezone
public void setTimezone(java.lang.String timezone)
Override the default TimeZone (UTC)- Parameters:
timezone
- any zone ID supported by @see java.time.ZoneId
-
addExtraParameter
public void addExtraParameter(java.lang.String name, java.lang.String value)
-
getExtraParameters
public java.util.Map<java.lang.String,java.lang.String> getExtraParameters()
-
setQuery
public void setQuery(java.lang.String query)
Set the query string.- Parameters:
query
- - the query string.
-
addStore
public void addStore(StoreRef store)
Set the stores to be supported - currently there can be only one. Searching across multiple stores is on the todo list.- Parameters:
store
- StoreRef
-
addQueryParameterDefinition
public void addQueryParameterDefinition(QueryParameterDefinition queryParameterDefinition)
Add parameter definitions for the query - used to parameterise the query string- Parameters:
queryParameterDefinition
- QueryParameterDefinition
-
excludeDataInTheCurrentTransaction
public void excludeDataInTheCurrentTransaction(boolean excludeDataInTheCurrentTransaction)
If true, any data in the current transaction will be ignored in the search. You will not see anything you have added in the current transaction. By default you will see data in the current transaction. This effectively gives read committed isolation. There is a performance overhead for this, at least when using lucene. This flag may be set to avoid that performance hit if you know you do not want to find results that are yet to be committed (this includes creations, deletions and updates)- Parameters:
excludeDataInTheCurrentTransaction
- boolean
-
addSort
public void addSort(java.lang.String field, boolean ascending)
Add a sort to the query (for those query languages that do not support it directly) The first sort added is treated as primary, the second as secondary etc. A helper method to create SortDefinitions.- Parameters:
field
- - this is initially a direct attribute on a node not an attribute on the parent etc TODO: It could be a relative path at some time.ascending
- - true to sort ascending, false for descending.
-
addSort
public void addSort(SearchParameters.SortDefinition sortDefinition)
Add a sort definition.- Parameters:
sortDefinition
- - the sort definition to add. Use the static member variables for sorting in score and index order.
-
getHighlight
public GeneralHighlightParameters getHighlight()
Gets the parameters used for search highlighing- Returns:
- GeneralHighlightParameters - the highlighting parameters
-
excludeDataInTheCurrentTransaction
public boolean excludeDataInTheCurrentTransaction()
Is data in the current transaction excluded from the search.- Returns:
- - true if data in the current transaction is ignored
-
getQueryParameterDefinitions
public java.util.ArrayList<QueryParameterDefinition> getQueryParameterDefinitions()
Get the query parameters that apply to this query.- Returns:
- - the parameter
-
getSortDefinitions
public java.util.ArrayList<SearchParameters.SortDefinition> getSortDefinitions()
Get the sort definitions that apply to this query.- Specified by:
getSortDefinitions
in interfaceBasicSearchParameters
- Returns:
- - the sort definitions
-
getStores
public java.util.ArrayList<StoreRef> getStores()
Get the stores in which this query should find results.- Specified by:
getStores
in interfaceBasicSearchParameters
- Returns:
- - the list of stores
-
setDefaultOperator
public void setDefaultOperator(SearchParameters.Operator defaultOperator)
Set the default operator for query elements when they are not explicit in the query.- Parameters:
defaultOperator
- Operator
-
getDefaultOperator
public SearchParameters.Operator getDefaultOperator()
Get the default operator for query elements when they are not explicit in the query.- Returns:
- the default operator
-
getLimitBy
public LimitBy getLimitBy()
Get how the result set should be limited- Returns:
- how the result set will be or was limited
-
setLimitBy
public void setLimitBy(LimitBy limitBy)
Set how the result set should be limited.- Parameters:
limitBy
- LimitBy
-
getPermissionEvaluation
public PermissionEvaluationMode getPermissionEvaluation()
Get when permissions are evaluated.- Returns:
- - how permissions are evaluated
-
setPermissionEvaluation
public void setPermissionEvaluation(PermissionEvaluationMode permissionEvaluation)
Set when permissions are evaluated.- Parameters:
permissionEvaluation
- PermissionEvaluationMode
-
getLimit
public int getLimit()
If limiting the result set in some way, get the limiting value used.- Returns:
- the limit
-
setLimit
public void setLimit(int limit)
If limiting the result set in some way, set the limiting value used.- Parameters:
limit
- int
-
getMlAnalaysisMode
public MLAnalysisMode getMlAnalaysisMode()
The way in which multilingual fields are treated durig a search. By default, only the specified locale is used and it must be an exact match.- Returns:
- - how locale related text is tokenised
-
setMlAnalaysisMode
public void setMlAnalaysisMode(MLAnalysisMode mlAnalaysisMode)
Set the way in which multilingual fields are treated durig a search. This controls in which locales an multilingual fields will match.- Parameters:
mlAnalaysisMode
- MLAnalysisMode
-
addLocale
public void addLocale(java.util.Locale locale)
Add a locale to include for multi-lingual text searches. If non are set, the default is to use the user's locale.- Parameters:
locale
- Locale
-
getLocales
public java.util.List<java.util.Locale> getLocales()
Get the locales used for multi-lingual text searches.- Specified by:
getLocales
in interfaceBasicSearchParameters
- Returns:
- - the locales
-
addTextAttribute
public void addTextAttribute(java.lang.String attribute)
Add a field for TEXT expansion- Parameters:
attribute
- - field/attribute in the index
-
getTextAttributes
public java.util.Set<java.lang.String> getTextAttributes()
Get the text attributes used for text expansion.- Returns:
- the text attributes used for text expansion
-
addAllAttribute
public void addAllAttribute(java.lang.String attribute)
Add a field for ALL expansion- Parameters:
attribute
- - field/attribute in the index
-
getAllAttributes
public java.util.Set<java.lang.String> getAllAttributes()
Get the text attributes used for ALL expansion.- Returns:
- the text attributes used for ALL expansion
-
getMaxItems
public int getMaxItems()
Get the max number of rows for the result set 0 or less is unlimited- Returns:
- the maxItems
-
setMaxItems
public void setMaxItems(int maxItems)
Set the max number of rows for the result set. A negative value implies unlimited 0 will return no results.- Parameters:
maxItems
- the maxItems to set
-
getSkipCount
public int getSkipCount()
Get the skip count - the number of rows to skip at the start of the query.- Returns:
- the skipCount
-
setSkipCount
public void setSkipCount(int skipCount)
Set the skip count - the number of rows to skip at the start of the query.- Parameters:
skipCount
- the skipCount to set
-
getDefaultFTSOperator
public SearchParameters.Operator getDefaultFTSOperator()
Get the default connective used when OR and AND are not specified for the FTS contains() function.- Returns:
- the defaultFTSConnective
-
setDefaultFTSOperator
public void setDefaultFTSOperator(SearchParameters.Operator defaultFTSOperator)
Set the default connective used when OR and AND are not specified for the FTS contains() function.- Parameters:
defaultFTSOperator
- the defaultFTSOperator to set
-
getDefaultFTSFieldOperator
public SearchParameters.Operator getDefaultFTSFieldOperator()
As getDefaultFTSConnective() but for field groups- Returns:
- the defaultFTSFieldConnective
-
setDefaultFTSFieldConnective
public void setDefaultFTSFieldConnective(SearchParameters.Operator defaultFTSFieldOperator)
As setDefaultFTSConnective() but for field groups- Parameters:
defaultFTSFieldOperator
- the defaultFTSFieldOperator to set
-
getNamespace
public java.lang.String getNamespace()
Get the default namespace.- Returns:
- the default namspace uri or prefix.
-
setNamespace
public void setNamespace(java.lang.String namespace)
Set the default namespace- Parameters:
namespace
- - the uri or prefix for the default namespace.
-
getQueryTemplates
public java.util.Map<java.lang.String,java.lang.String> getQueryTemplates()
Get the query templates- Returns:
- - the query templates
-
addQueryTemplate
public java.lang.String addQueryTemplate(java.lang.String name, java.lang.String template)
Add/replace a query template Not all languages support query templates- Parameters:
name
- Stringtemplate
- String- Returns:
- any removed template or null
-
getMaxPermissionCheckTimeMillis
public long getMaxPermissionCheckTimeMillis()
-
setMaxPermissionCheckTimeMillis
public void setMaxPermissionCheckTimeMillis(long maxPermissionCheckTimeMillis)
-
getMaxPermissionChecks
public int getMaxPermissionChecks()
-
setMaxPermissionChecks
public void setMaxPermissionChecks(int maxPermissionChecks)
-
getUseInMemorySort
public java.lang.Boolean getUseInMemorySort()
- Returns:
- the useInMemorySort
-
setUseInMemorySort
public void setUseInMemorySort(java.lang.Boolean useInMemorySort)
- Parameters:
useInMemorySort
- the useInMemorySort to set
-
getMaxRawResultSetSizeForInMemorySort
public java.lang.Integer getMaxRawResultSetSizeForInMemorySort()
- Returns:
- the maxRawResultSetSizeForInMemorySort
-
setMaxRawResultSetSizeForInMemorySort
public void setMaxRawResultSetSizeForInMemorySort(java.lang.Integer maxRawResultSetSizeForInMemorySort)
- Parameters:
maxRawResultSetSizeForInMemorySort
- the maxRawResultSetSizeForInMemorySort to set
-
isBulkFetchEnabled
public boolean isBulkFetchEnabled()
- Returns:
- true if bulk fetch is enabled
-
setBulkFetchEnabled
public void setBulkFetchEnabled(boolean isBulkFetchEnabled)
- Parameters:
isBulkFetchEnabled
- boolean
-
getDefaultFieldName
public java.lang.String getDefaultFieldName()
- Returns:
- the default field name
-
setDefaultFieldName
public void setDefaultFieldName(java.lang.String defaultFieldName)
- Parameters:
defaultFieldName
- - the default field name to use
-
getFieldFacets
public java.util.List<SearchParameters.FieldFacet> getFieldFacets()
-
addFieldFacet
public void addFieldFacet(SearchParameters.FieldFacet fieldFacet)
-
getFacetQueries
public java.util.List<java.lang.String> getFacetQueries()
-
addFacetQuery
public void addFacetQuery(java.lang.String facetQuery)
-
getFilterQueries
public java.util.List<java.lang.String> getFilterQueries()
-
addFilterQuery
public void addFilterQuery(java.lang.String filterQuery)
-
getPivots
public java.util.List<java.util.List<java.lang.String>> getPivots()
-
addPivots
public void addPivots(java.util.List<java.lang.String> pivotFields)
-
getSortLocale
public java.util.Locale getSortLocale()
-
setExcludeTenantFilter
public void setExcludeTenantFilter(boolean excludeTenantFilter)
-
getExcludeTenantFilter
public boolean getExcludeTenantFilter()
-
setQueryConsistency
public void setQueryConsistency(QueryConsistency queryConsistency)
-
getQueryConsistency
public QueryConsistency getQueryConsistency()
- Returns:
- the queryConsistency
-
getSinceTxId
public java.lang.Long getSinceTxId()
If not null, then the search should only include results from transactions aftersinceTxId
.- Returns:
- sinceTxId
-
setSinceTxId
public void setSinceTxId(java.lang.Long sinceTxId)
If not null, then the search should only include results from transactions aftersinceTxId
.- Parameters:
sinceTxId
- Long
-
getSearchTerm
public java.lang.String getSearchTerm()
- Returns:
- the searchTerm
-
setSearchTerm
public void setSearchTerm(java.lang.String searchTerm)
- Parameters:
searchTerm
- the searchTerm to set
-
isSpellCheck
public boolean isSpellCheck()
- Returns:
- the spellCheck
-
hasFaceting
public boolean hasFaceting()
Checks if faceting is used as part of the query, Search-347.- Parameters:
searchParameters
-- Returns:
- true if exists
-
setSpellCheck
public void setSpellCheck(boolean spellCheck)
- Parameters:
spellCheck
- the spellCheck to set
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
equals
public boolean equals(java.lang.Object obj)
- Overrides:
equals
in classjava.lang.Object
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
toAuditString
public java.lang.String toAuditString()
-
usePostSort
public boolean usePostSort(int length, boolean useInMemorySortDefault, int maxRawResultSetSizeForInMemorySortDefault)
- Parameters:
length
- intuseInMemorySortDefault
- booleanmaxRawResultSetSizeForInMemorySortDefault
- int- Returns:
- boolean
-
isIncludeMetadata
public boolean isIncludeMetadata()
-
setIncludeMetadata
public void setIncludeMetadata(boolean includeMetadata)
-
-