UNPKG

coveo-search-ui

Version:

Coveo JavaScript Search Framework

313 lines (301 loc) • 13.2 kB
import { IQueryFunction } from './QueryFunction'; import { IRankingFunction } from './RankingFunction'; import { IGroupByRequest } from './GroupByRequest'; import { Context } from '../ui/PipelineContext/PipelineGlobalExports'; import { ICategoryFacetRequest } from './CategoryFacetRequest'; import { IFacetRequest } from './Facet/FacetRequest'; /** * The format of a successful response. */ export type ResponseFormat = 'json' | 'opensearch-atom' | 'opensearch-rss' | 'xlsx'; /** * The available global configuration options when requesting facets through the [facets]{IQuery.facets} array. */ export interface IFacetOptions { /** * Whether the facet values should be returned in their current order. */ freezeFacetOrder?: Boolean; } /** * The information about the user we'd like to check and its actions. */ export interface IUserActionsRequest { /** * The id of the user for which we should check the document views. */ tagViewsOfUser: string; } /** * A Search API commerce request. */ export interface ICommerceRequest { /** * The unique identifier of the catalog to query. * * **Example:** `46bc4275-e613-4dd5-b1ea-3e5aca1bcd9d` */ catalogId?: string; /** * A mandatory query expression to apply if the commerce request affects the query. * **Example:** `@storeid==1001` */ filter?: string; /** * The way the commerce request should affect query results. * **Example:** `selectCatalogObjects` */ operation?: 'selectCatalogObjects' | 'excludeCatalogObjects'; } /** * The IQuery interface describes a query that can be performed on the Coveo REST Search API. * * For basic usage, see the {@link IQuery.q} and {@link IQuery.aq} properties. * * In a normal scenario, a query is built by the {@link QueryBuilder} class. */ export interface IQuery { /** * The basic query expression. <br/> * This is typically the query expression entered by the user in a query box.<br/> * Since this part of the query is expected to come from user input, it is processed by the Did You Mean feature. */ q: string; /** * The advanced query expression.<br/> * This is the part of the query expression generated by code based on various rules.<br/> * eg: Selecting a facet value will cause an expression to be added to the advanced query expression. */ aq?: string; /** * The constant query expression.<br/> * This part of the expression is much alike the advanced query expression, but it is meant to hold expressions that are constant for all users of a search interface/widget.<br/> * The results of evaluating those expressions are kept in a special index cache, to avoid re-evaluating them on each query.<br/> * You must be careful to not include dynamic parts in this expression, otherwise you risk filling up the cache with useless data and this might have a negative impact on performance.<br/> * Expressions other than cq also benefit from caching in the index, but using cq allows to explicitly require that a part of the query be included in the cache. */ cq?: string; /** * The contextual text.<br/> * This is the contextual text part of the query. It uses the Coveo Machine Learning service to pick key keywords from * the text and add them to the basic expression. * This field is mainly used to pass context such a case description, long textual query or any other form of text that might help in * refining the query. */ lq?: string; /** * The disjunction query expression.<br/> * This is the disjunctive part of the query expression that is merged with the other expression parts using an OR boolean operator.<br/> * When specified, the final expression evaluated by the index ends up being (q aq cq) OR (dq). */ dq?: string; /** * The hub value set from the {@link Analytics} component.<br/> * Used for analytics reporting in the Coveo platform */ searchHub?: string; /** * The tab value set from the {@link Tab} component. */ tab?: string; locale?: string; /** * Name of the query pipeline to use.<br/> * Specifies the name of the query pipeline to use for the query. If not specified, the default value is default, which means the default query pipeline will be used. */ pipeline?: string; /** * The maximum age for cached query results, in milliseconds.<br/> * If results for the exact same request (including user identities) are available in the in-memory cache, they will be used if they are not older than the specified value.<br/> * Otherwise, the query will be sent to the index. */ maximumAge?: number; /** * Whether to enable wildcards on the basic expression keywords.<br/> * This enables the wildcard features of the index. Coveo Platform will expand keywords containing wildcard characters to the possible matching keywords to broaden the query.<br/> * See [Using Wildcards in Queries](https://docs.coveo.com/en/1580/).<br/> * If not specified, this parameter defaults to false. */ wildcards?: boolean; /** * Whether to enable question marks with wildcards.<br/> * This enables using the question mark ? character within wildcard expressions. */ questionMark?: boolean; /** * Whether to enable the support for operator in lowercase (AND OR -> and or) */ lowercaseOperators?: boolean; /** * Whether to enable partial matching of the basic expression keywords.<br/> * By activating this, when the basic expression contains at least {@link IQuery.partialMatchKeywords}, items containing only the number of keywords specified by {@link IQuery.partialMatchThreshold} will also match the query.<br/> * Without this option, items are required to contain all the keywords in order to match the query.<br/> * If not specified, this parameter defaults to false. */ partialMatch?: boolean; /** * The minimum number of keywords needed to activate partial match.<br/> * Specifies the minimum number of keywords needed for the partial match feature to activate.<br/> * If the basic expression contains less than this number of keywords, no transformation is applied on the query.<br/> * If not specified, this parameter defaults to 5. */ partialMatchKeywords?: number; /** * The threshold to use for matching items when partial match is enabled.<br/> * Specifies the minimum number of query keywords that an item must contain when partial match is enabled. This value can either be an absolute number or a percentage value based on the total number of keywords.<br/> * If not specified, this parameter defaults to 50%. */ partialMatchThreshold?: string; /** * This is the 0-based index of the first result to return.<br/> * If not specified, this parameter defaults to 0. */ firstResult?: number; /** * This is the number of results to return, starting from {@link IQuery.firstResult}.<br/> * If not specified, this parameter defaults to 10. */ numberOfResults?: number; /** * Specifies the sort criterion(s) to use to sort results. If not specified, this parameter defaults to Relevancy.<br/> * Possible values are : <br/> * -- relevancy : This uses all the configured ranking weights as well as any specified ranking expressions to rank results.<br/> * -- dateascending / datedescending : Sort using the value of the @date field, which is typically the last modification date of an item in the index.<br/> * -- qre : Sort using only the weights applied through ranking expressions. This is much like using Relevancy except that automatic weights based on keyword proximity etc, are not computed.<br/> * -- nosort : Do not sort the results. The order in which items are returned is essentially random.<br/> * -- @field ascending / @field descending : Sort using the value of a custom field. */ sortCriteria?: string; sortField?: string; /** * Specifies a field on which {@link Folding} should be performed.<br/> * Folding is a kind of duplicate filtering where only the first result with any given value of the field is included in the result set.<br/> * It's typically used to return only one result in a conversation, for example when forum posts in a thread are indexed as separate items. */ filterField?: string; /** * Number of results that should be folded, using the {@link IQuery.filterField} */ filterFieldRange?: number; /** * Specifies an array of fields that should be returned for each result.<br/> * eg: ['@foo','@bar'] * */ fieldsToInclude?: string[]; /** * Specifies an array of fields that should be excluded from the query results.<br/> * eg: ['@foo','@bar'] * */ fieldsToExclude?: string[]; /** * Specifies the length (in number of characters) of the excerpts generated by the indexer based on the keywords present in the query.<br/> * The index includes the top most interesting sentences (in the order they appear in the item) that fit in the specified number of characters.<br/> * When not specified, the default value is 200. */ excerptLength?: number; /** * Specifies whether the first sentences of the item should be included in the results.<br/> * The retrieveFirstSentences option is typically used instead of excerpts when displaying email items, where the first sentence of the email might be of more interest than a contextually generated excerpt. */ retrieveFirstSentences?: boolean; /** * This enables the query correction feature of the index.<br/> * By activating this, the index returns an array of {link IQueryCorrection} with suggested word corrections. */ enableDidYouMean?: boolean; /** * Specifies an array of Query Function operation that will be executed on the results. */ queryFunctions?: IQueryFunction[]; /** * Specifies an array of Ranking Function operations that will be executed on the result */ rankingFunctions?: IRankingFunction[]; /** * Specifies an array of Group By operations that can be performed on the query results to extract facets */ groupBy?: IGroupByRequest[]; /** * Specifies an array of request to retrieve facet values for the CategoryFacet component */ categoryFacets?: ICategoryFacetRequest[]; /** * Whether to include debug information from the Search API in the query response. * * **Note:** * > This debug information does not include ranking information. * * Setting this property to `true` can have an adverse effect on query performance, so it should always be left to * `false` in a production environment. */ debug?: boolean; timezone?: string; /** * Whether to enable the special query syntax such as field references for the basic query expression (parameter q). * It is equivalent to a No syntax block applied to the basic query expression. * If not specified, the parameter defaults to false */ enableQuerySyntax?: boolean; enableDuplicateFiltering?: boolean; /** * Whether the index should take collaborative rating in account when ranking result. See: {@link ResultRating} */ enableCollaborativeRating?: boolean; /** * Specifies the childField when doing parent-child loading (See: {@link Folding}) */ childField?: string; /** * Specifies the parentField when doing parent-child loading (See: {@link Folding}) */ parentField?: string; /** * The context is a map of key_value that can be used in the Query pipeline in the Coveo platform.<br/> */ context?: Context; /** * The actions history represents the past actions a user made and is used by the Coveo Machine Learning service to * suggest recommendations. It is generated by the page view script (https://github.com/coveo/coveo.analytics.js) */ actionsHistory?: string; /** * This is the id of the recommendation interface that generated the query. */ recommendation?: string; /** * Specifies if the Search API should perform queries even when no keywords were entered by the end user. * * End user keywords are present in either the {@link IQuery.q} or {@link IQuery.lq} part of the query. * * This parameter is normally controlled by {@link SearchInterface.options.allowEmptyQuery} option. */ allowQueriesWithoutKeywords?: boolean; /** * Specifies an array of request to retrieve facet values for the DynamicFacet component. */ facets?: IFacetRequest[]; /** * The global configuration options to apply to the requests in the [facets]{@link IQuery.facets} array. */ facetOptions?: IFacetOptions; /** * The user ID or visitor ID whose item views should be tagged in the query results * (see the [isUserActionView]{@link IQueryResult.isUserActionView} property of the [IQueryResult]{@link IQueryResult} interface). * * **Examples:** * - asmith@example.com * - 6318b0c6-9397-4d70-b393-cf4770fd1bab */ userActions?: IUserActionsRequest; /** * The commerce request to execute. */ commerce?: ICommerceRequest; /** * The format of a successful response. * If not specified, this parameter defaults to 'json'. */ format?: ResponseFormat; }