Skip to content

Commit

Permalink
Add token pruning to clients for text expansion query (#2370)
Browse files Browse the repository at this point in the history
* Add pruning config to text_expansion query

* Add weighted tokens query

* Linting

* PR feedback - float to int

* PR feedback - omit value

* Revise comment

* PR feedback, remove additional property

* Linting
  • Loading branch information
kderusso authored Dec 21, 2023
1 parent 5c8fed5 commit 6d9c9c8
Show file tree
Hide file tree
Showing 6 changed files with 257 additions and 9 deletions.
172 changes: 163 additions & 9 deletions output/schema/schema.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 13 additions & 0 deletions output/typescript/types.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions specification/_types/query_dsl/TextExpansionQuery.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,17 @@
* under the License.
*/

import { TokenPruningConfig } from './TokenPruningConfig'
import { QueryBase } from './abstractions'

export class TextExpansionQuery extends QueryBase {
/** The text expansion NLP model to use */
model_id: string
/** The query text */
model_text: string
/** Token pruning configurations
* @availability stack since=8.13.0 stability=experimental
* @availability serverless stability=experimental
*/
pruning_config?: TokenPruningConfig
}
35 changes: 35 additions & 0 deletions specification/_types/query_dsl/TokenPruningConfig.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/*
* Licensed to Elasticsearch B.V. under one or more contributor
* license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright
* ownership. Elasticsearch B.V. licenses this file to you under
* the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/

import { float, integer } from '@_types/Numeric'

export class TokenPruningConfig {
/** Tokens whose frequency is more than this threshold times the average frequency of all tokens in the specified field are considered outliers and pruned.
* @server_default 5
*/
tokens_freq_ratio_threshold?: integer
/** Tokens whose weight is less than this threshold are considered nonsignificant and pruned.
* @server_default 0.4
*/
tokens_weight_threshold?: float
/** Whether to only score pruned tokens, vs only scoring kept tokens.
* @server_default false
*/
only_score_pruned_tokens?: boolean
}
32 changes: 32 additions & 0 deletions specification/_types/query_dsl/WeightedTokensQuery.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/*
* Licensed to Elasticsearch B.V. under one or more contributor
* license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright
* ownership. Elasticsearch B.V. licenses this file to you under
* the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/

import { AdditionalProperty } from '@spec_utils/behaviors'
import { TokenPruningConfig } from './TokenPruningConfig'
import { QueryBase } from './abstractions'
import { Field, FieldValue } from '@_types/common'
import { Dictionary } from '@spec_utils/Dictionary'
import { float } from '@_types/Numeric'

export class WeightedTokensQuery extends QueryBase {
/** The tokens representing this query */
tokens: Dictionary<string, float>
/** Token pruning configurations */
pruning_config?: TokenPruningConfig
}
Loading

0 comments on commit 6d9c9c8

Please sign in to comment.