117 lines
3.4 KiB
Markdown
117 lines
3.4 KiB
Markdown
---
|
|
layout: default
|
|
title: Ranking evaluation
|
|
nav_order: 60
|
|
---
|
|
|
|
# Ranking evaluation
|
|
**Introduced 1.0**
|
|
{: .label .label-purple }
|
|
|
|
The [rank]({{site.url}}{{site.baseurl}}/opensearch/supported-field-types/rank/) eval endpoint allows you to evaluate the quality of ranked search results.
|
|
|
|
## Path and HTTP methods
|
|
|
|
```
|
|
GET <index_name>/_rank_eval
|
|
POST <index_name>/_rank_eval
|
|
```
|
|
|
|
## Query parameters
|
|
|
|
Query parameters are optional.
|
|
|
|
Parameter | Data type | Description
|
|
:--- | :--- | :---
|
|
ignore_unavailable | Boolean | Defaults to `false`. When set to `false` the response body will return an error if an index is closed or missing.
|
|
allow_no_indices | Boolean | Defaults to `true`. When set to `false` the response body will return an error if a wildcard expression points to indexes that are closed or missing.
|
|
expand_wildcards | String | Expand wildcard expressions for indexes that are `open`, `closed`, `hidden`, `none`, or `all`.
|
|
search_type | String | Set search type to either `query_then_fetch` or `dfs_query_then_fetch`.
|
|
|
|
## Request fields
|
|
|
|
The request body must contain at least one parameter.
|
|
|
|
Field Type | Description
|
|
:--- | :---
|
|
id | Document or template ID.
|
|
requests | Set multiple search requests within the request field section.
|
|
ratings | Document relevance score.
|
|
k | The number of documents returned per query. Default is set to 10.
|
|
relevant_rating_threshold | The threshold at which documents are considered relevant. Default is set to 1.
|
|
normalize | Discounted cumulative gain will be calculated when set to `true`.
|
|
maximum_relevance | Sets the maximum relevance score when using the expected reciprocal rank metric.
|
|
ignore_unlabeled | Defaults to `false`. Unlabeled documents are ignored when set to `true`.
|
|
template_id | Template ID.
|
|
params | Parameters used in the template.
|
|
|
|
#### Example request
|
|
|
|
````json
|
|
GET shakespeare/_rank_eval
|
|
{
|
|
"requests": [
|
|
{
|
|
"id": "books_query",
|
|
"request": {
|
|
"query": { "match": { "text": "thou" } }
|
|
},
|
|
"ratings": [
|
|
{ "_index": "shakespeare", "_id": "80", "rating": 0 },
|
|
{ "_index": "shakespeare", "_id": "115", "rating": 1 },
|
|
{ "_index": "shakespeare", "_id": "117", "rating": 2 }
|
|
]
|
|
},
|
|
{
|
|
"id": "words_query",
|
|
"request": {
|
|
"query": { "match": { "text": "art" } }
|
|
},
|
|
"ratings": [
|
|
{ "_index": "shakespeare", "_id": "115", "rating": 2 }
|
|
]
|
|
}
|
|
]
|
|
}
|
|
````
|
|
{% include copy-curl.html %}
|
|
|
|
#### Example response
|
|
|
|
````json
|
|
{
|
|
"rank_eval": {
|
|
"metric_score": 0.7,
|
|
"details": {
|
|
"query_1": {
|
|
"metric_score": 0.9,
|
|
"unrated_docs": [
|
|
{
|
|
"_index": "shakespeare",
|
|
"_id": "1234567"
|
|
}, ...
|
|
],
|
|
"hits": [
|
|
{
|
|
"hit": {
|
|
"_index": "shakespeare",
|
|
"_type": "page",
|
|
"_id": "1234567",
|
|
"_score": 5.123456789
|
|
},
|
|
"rating": 1
|
|
}, ...
|
|
],
|
|
"metric_details": {
|
|
"precision": {
|
|
"relevant_docs_retrieved": 3,
|
|
"docs_retrieved": 6
|
|
}
|
|
}
|
|
},
|
|
"query_2": { [... ] }
|
|
},
|
|
"failures": { [... ] }
|
|
}
|
|
}
|
|
```` |