public class QueryBuilder
extends java.lang.Object
Constructor and Description |
---|
QueryBuilder(java.lang.String workflowName)
init request for given pipeline with default data factory.
|
QueryBuilder(java.lang.String workflowName,
DataFactory factory)
create for non-default data factory.
|
QueryBuilder(java.lang.String workflowName,
Record request)
create based on existing record.
|
Modifier and Type | Method and Description |
---|---|
QueryBuilder |
addAllOfFilter(java.lang.String attribute,
java.lang.Object... values)
add a "allOf" filter of required values for an attribute.
|
QueryBuilder |
addAtLeastFilter(java.lang.String attribute,
java.lang.Object value)
add a "atLeast" filter for the minimum (inclusive lower bound) value of an attribute.
|
QueryBuilder |
addAtMostFilter(java.lang.String attribute,
java.lang.Object value)
add a "atMost" filter for the maximum (inclusive upper bound) value of an attribute.
|
QueryBuilder |
addAttributeConfig(java.lang.String parameterName,
java.lang.String attributeName,
AnyMap config)
add a complex parameter (ie. the given config) for an attribute: the parameter will be a sequence of maps, each
containing the attribute name under key "attribute". e.g.
|
QueryBuilder |
addBoundFilter(java.lang.String attribute,
java.lang.String filterType,
java.lang.Object boundValue)
add a filter with a single value bound.
|
QueryBuilder |
addFacetByAttribute(java.lang.String attribute,
int maxCount)
add facetby config for attribute with maxcount.
|
QueryBuilder |
addFacetByAttribute(java.lang.String attribute,
int maxCount,
java.lang.String sortCriterion,
QueryConstants.SortOrder sortOrder)
add facetby config for attribute with maxcount and sort config for facets.
|
QueryBuilder |
addFacetByConfig(java.lang.String attribute,
AnyMap config) |
QueryBuilder |
addFilter(java.lang.String attribute,
AnyMap filter)
add a arbitrary complex filter object for an attribute.
|
QueryBuilder |
addGreaterThanFilter(java.lang.String attribute,
java.lang.Object value)
add a "greaterThan" filter for the exclusive lower bound value of an attribute.
|
QueryBuilder |
addGroupByAttribute(java.lang.String groupCommand,
java.lang.String attribute,
int maxcount)
Add a group configuration with attribute and maxcount to RecordMetadata/groupby/groupCommand.
|
QueryBuilder |
addGroupByAttribute(java.lang.String groupName,
java.lang.String groupCommand,
java.lang.String attribute,
int maxcount)
Add a group configuration with attribute and maxcount to RecordMetadata/groupby/groupName/groupCommand.
|
QueryBuilder |
addGroupByAttribute(java.lang.String groupName,
java.lang.String groupCommand,
java.lang.String attribute,
int maxcount,
java.lang.String asMainResult)
Add a group configuration with attribute and maxcount to RecordMetadata/groupby/groupName/groupCommand and set
asMainResult within RecordMetadata/groupby.
|
QueryBuilder |
addGroupByConfig(java.lang.String groupCommand,
AnyMap config)
Add a group configuration to RecordMetadata/groupby/groupCommand.
|
QueryBuilder |
addGroupByConfig(java.lang.String groupName,
java.lang.String groupCommand,
AnyMap config)
Add a group configuration to RecordMetadata/groupby/groupName/groupCommand.
|
QueryBuilder |
addGroupByConfig(java.lang.String groupName,
java.lang.String groupCommand,
AnyMap config,
java.lang.String asMainResult)
Add a group configuration to RecordMetadata/groupby/groupName/groupCommand and set asMainResult within
RecordMetadata/groupby.
|
QueryBuilder |
addHighlightByAttribute(java.lang.String... attributes)
Add a configuration for each attribute to highlight
AnySeq . |
QueryBuilder |
addHighlightByConfig(java.lang.String attribute,
AnyMap config)
Add the given configuration for the given attribute to highlight
AnySeq . |
QueryBuilder |
addLessThanFilter(java.lang.String attribute,
java.lang.Object value)
add a "lessThan" filter for the exclusive upper bound value of an attribute.
|
QueryBuilder |
addListFilter(java.lang.String attribute,
java.lang.String filterType,
java.lang.Object... values)
add a filter with a value list.
|
QueryBuilder |
addNoneOfFilter(java.lang.String attribute,
java.lang.Object... values)
add a "noneOf" filter of forbidden values for an attribute.
|
QueryBuilder |
addOneOfFilter(java.lang.String attribute,
java.lang.Object... values)
add a "oneOf" filter of allowed values for an attribute.
|
QueryBuilder |
addParameter(java.lang.String name,
java.lang.String value)
adds to a parameter sequence.
|
QueryBuilder |
addRangeFilter(java.lang.String attribute,
java.lang.Object lowerBound,
java.lang.Object upperBound)
add range filter (inclusive). bounds may be null.
|
QueryBuilder |
addResultAttributes(java.lang.String... fieldNames)
adds the given fieldNames as result field(s).
|
QueryBuilder |
addSortBy(java.lang.String attribute,
QueryConstants.SortOrder mode)
add an sortby specification.
|
ResultAccessor |
executeRequest(SearchService searchService)
execute query on given search service and wrap result in high level result helper.
|
org.w3c.dom.Document |
executeRequestXml(SearchService searchService)
execute query on given search service and return search result as XML DOM document.
|
java.lang.String |
executeRequestXmlString(SearchService searchService)
execute query on given search service and return search result as XML string.
|
DataFactory |
getFactory() |
AnyMap |
getMetadata()
access underlying query record metadata for advanced manipulation.
|
Record |
getQuery()
access underlying query record for advanced manipulation.
|
java.lang.String |
getWorkflowName()
the name of the search pipeline to use.
|
QueryBuilder |
setAttachment(java.lang.String name,
byte[] attachment)
add attachment to query.
|
QueryBuilder |
setId(java.lang.String id)
set the ID of the query record.
|
QueryBuilder |
setIndexName(java.lang.String indexName)
set the index name for the query.
|
QueryBuilder |
setLanguage(java.lang.String language)
set the language parameter for the query.
|
QueryBuilder |
setMaxCount(int maxCount)
set the maximum search result size for the query.
|
QueryBuilder |
setOffset(int offset)
set the search result offset for the query, i.e. the number of most relevant result objects to skip in the result
list.
|
QueryBuilder |
setParameter(java.lang.String name,
java.lang.String value)
sets a single parameter value.
|
QueryBuilder |
setQuery(java.lang.String queryString)
set the textual query string for the query.
|
QueryBuilder |
setQueryAttribute(java.lang.String attributeName,
java.lang.Object... values)
set attribute in "queryAttribute" part of request.
|
QueryBuilder |
setRanking(Any ranking) |
QueryBuilder |
setResultAttributes(java.lang.String... attributes)
set names attributes to appear in result records.
|
QueryBuilder |
setThreshold(double threshold)
set the threshold for the relevance value of search results, i.e. only results having a relevance of at least the
threshold value, should be returned to the client.
|
public QueryBuilder(java.lang.String workflowName)
workflowName
- workflow name.public QueryBuilder(java.lang.String workflowName, DataFactory factory)
workflowName
- workflow name.factory
- data factorypublic QueryBuilder(java.lang.String workflowName, Record request)
workflowName
- workflow name.request
- base request.public QueryBuilder setId(java.lang.String id)
UUID
as key.id
- Idpublic QueryBuilder setQuery(java.lang.String queryString)
queryString
- textual query string.public QueryBuilder setQueryAttribute(java.lang.String attributeName, java.lang.Object... values)
attributeName
- attribute namevalues
- values.public QueryBuilder setMaxCount(int maxCount)
maxCount
- maximum result count.public QueryBuilder setOffset(int offset)
offset
- result offsetpublic QueryBuilder setThreshold(double threshold)
threshold
- relevance threshold value.public QueryBuilder setLanguage(java.lang.String language)
language
- a language code.public QueryBuilder setIndexName(java.lang.String indexName)
indexName
- index namepublic QueryBuilder setResultAttributes(java.lang.String... attributes)
attributes
- attribute names.public QueryBuilder setRanking(Any ranking)
ranking
- set ranking configurationpublic QueryBuilder addSortBy(java.lang.String attribute, QueryConstants.SortOrder mode)
attribute
- an attribute to order bymode
- the order direction (ascending or descending)public QueryBuilder addHighlightByAttribute(java.lang.String... attributes)
AnySeq
.attributes
- the attributes.QueryBuilder
.public QueryBuilder addHighlightByConfig(java.lang.String attribute, AnyMap config)
AnySeq
.attribute
- the attribute.config
- the configuration as AnyMap
.QueryBuilder
.public QueryBuilder addFacetByAttribute(java.lang.String attribute, int maxCount, java.lang.String sortCriterion, QueryConstants.SortOrder sortOrder)
attribute
- attribute namemaxCount
- max number of facets to returnsortCriterion
- sort criterion for facets, e.g. "value" or "count"sortOrder
- sort order for facetspublic QueryBuilder addFacetByAttribute(java.lang.String attribute, int maxCount)
attribute
- attribute namemaxCount
- max number of facets to returnpublic QueryBuilder addFacetByConfig(java.lang.String attribute, AnyMap config)
attribute
- attribute nameconfig
- facetBy config for this attributepublic QueryBuilder addOneOfFilter(java.lang.String attribute, java.lang.Object... values)
attribute
- attribute namevalues
- allowed valuespublic QueryBuilder addAllOfFilter(java.lang.String attribute, java.lang.Object... values)
attribute
- attribute namevalues
- required valuespublic QueryBuilder addNoneOfFilter(java.lang.String attribute, java.lang.Object... values)
attribute
- attribute namevalues
- forbidden valuespublic QueryBuilder addAtLeastFilter(java.lang.String attribute, java.lang.Object value)
attribute
- attribute namevalue
- minimum valuepublic QueryBuilder addAtMostFilter(java.lang.String attribute, java.lang.Object value)
attribute
- attribute namevalue
- maximum valuepublic QueryBuilder addGreaterThanFilter(java.lang.String attribute, java.lang.Object value)
attribute
- attribute namevalue
- exclusive lower bound valuepublic QueryBuilder addLessThanFilter(java.lang.String attribute, java.lang.Object value)
attribute
- attribute namevalue
- exclusive upper bound valuepublic QueryBuilder addRangeFilter(java.lang.String attribute, java.lang.Object lowerBound, java.lang.Object upperBound)
attribute
- attribute namelowerBound
- lower bound of rangeupperBound
- upper bound of rangepublic QueryBuilder addListFilter(java.lang.String attribute, java.lang.String filterType, java.lang.Object... values)
attribute
- attribute namefilterType
- filter typevalues
- filter valuespublic QueryBuilder addBoundFilter(java.lang.String attribute, java.lang.String filterType, java.lang.Object boundValue)
attribute
- attribute namefilterType
- filter typeboundValue
- valuepublic QueryBuilder addFilter(java.lang.String attribute, AnyMap filter)
attribute
- attribute namefilter
- filterpublic QueryBuilder addAttributeConfig(java.lang.String parameterName, java.lang.String attributeName, AnyMap config)
{Seq key='parameterName' ${config-map {Value key='attribute' value='$attributeName'} } }
parameterName
- parameter nameattributeName
- attribute nameconfig
- the map which is added to the seq named param and inti which the attribute string/value is added.public QueryBuilder setParameter(java.lang.String name, java.lang.String value)
name
- parameter namevalue
- parameter valuepublic QueryBuilder addParameter(java.lang.String name, java.lang.String value)
name
- parameter namevalue
- parameter valuepublic QueryBuilder setAttachment(java.lang.String name, byte[] attachment)
name
- attachment nameattachment
- attachment contentpublic ResultAccessor executeRequest(SearchService searchService) throws ProcessingException
searchService
- search service instance.ProcessingException
- any error while processing the searchpublic org.w3c.dom.Document executeRequestXml(SearchService searchService) throws javax.xml.parsers.ParserConfigurationException
searchService
- search service instance.javax.xml.parsers.ParserConfigurationException
- error creating the XML resultpublic java.lang.String executeRequestXmlString(SearchService searchService) throws javax.xml.parsers.ParserConfigurationException
searchService
- search service instance.javax.xml.parsers.ParserConfigurationException
- error creating the XML resultpublic Record getQuery()
public AnyMap getMetadata()
public java.lang.String getWorkflowName()
public DataFactory getFactory()
public QueryBuilder addResultAttributes(java.lang.String... fieldNames)
public QueryBuilder addGroupByAttribute(java.lang.String groupCommand, java.lang.String attribute, int maxcount)
groupCommand
- the group command.attribute
- the attribute.maxcount
- the max count.QueryBuilder
.public QueryBuilder addGroupByConfig(java.lang.String groupCommand, AnyMap config)
groupCommand
- the group command.config
- the configurationQueryBuilder
.public QueryBuilder addGroupByAttribute(java.lang.String groupName, java.lang.String groupCommand, java.lang.String attribute, int maxcount)
groupName
- the group name.groupCommand
- the group command.attribute
- the attribute.maxcount
- the maxcount.QueryBuilder
.public QueryBuilder addGroupByConfig(java.lang.String groupName, java.lang.String groupCommand, AnyMap config)
groupName
- group name.groupCommand
- the group command.config
- the configuration.QueryBuilder
.public QueryBuilder addGroupByAttribute(java.lang.String groupName, java.lang.String groupCommand, java.lang.String attribute, int maxcount, java.lang.String asMainResult)
groupName
- the group name.groupCommand
- the group command.attribute
- the attribute.maxcount
- the maxcount.asMainResult
- the group name which should be used as main result.QueryBuilder
.public QueryBuilder addGroupByConfig(java.lang.String groupName, java.lang.String groupCommand, AnyMap config, java.lang.String asMainResult)
groupName
- the group name.groupCommand
- the command name.config
- the configuration.asMainResult
- the group name which should be used as main result.QueryBuilder