OpenSearch/docs/painless/painless-contexts/painless-similarity-context...

67 lines
2.3 KiB
Plaintext
Raw Normal View History

[[painless-similarity-context]]
=== Similarity context
Use a Painless script to create a
{ref}/index-modules-similarity.html[similarity] equation for scoring
documents in a query.
*Variables*
`params` (`Map`, read-only)::
User-defined parameters passed in as part of the query.
*Variables*
`params` (`Map`, read-only)::
User-defined parameters passed in at query-time.
`weight` (`float`, read-only)::
The weight as calculated by a {ref}/painless-weight-context[weight script]
`query.boost` (`float`, read-only)::
The boost value if provided by the query. If this is not provided the
value is `1.0f`.
`field.docCount` (`long`, read-only)::
The number of documents that have a value for the current field.
`field.sumDocFreq` (`long`, read-only)::
The sum of all terms that exist for the current field. If this is not
available the value is `-1`.
`field.sumTotalTermFreq` (`long`, read-only)::
The sum of occurrences in the index for all the terms that exist in the
current field. If this is not available the value is `-1`.
`term.docFreq` (`long`, read-only)::
The number of documents that contain the current term in the index.
`term.totalTermFreq` (`long`, read-only)::
The total occurrences of the current term in the index.
`doc.length` (`long`, read-only)::
The number of tokens the current document has in the current field. This
is decoded from the stored {ref}/norms[norms] and may be approximate for
long fields
`doc.freq` (`long`, read-only)::
The number of occurrences of the current term in the current
document for the current field.
Note that the `query`, `field`, and `term` variables are also available to the
{ref}/painless-weight-context[weight context]. They are more efficiently used
there, as they are constant for all documents.
For queries that contain multiple terms, the script is called once for each
term with that term's calculated weight, and the results are summed. Note that some
terms might have a `doc.freq` value of `0` on a document, for example if a query
uses synonyms.
*Return*
`double`::
The similarity score for the current document.
*API*
The standard <<painless-api-reference, Painless API>> is available.