ランク特徴フィールドタイプ
rank_features
フィールドは数値特徴ベクトルをインデックス化できるため、後で rank_feature
クエリを使用してドキュメントをブーストするために使用できます。
これは rank_feature
データ型に類似していますが、特徴のリストがスパースな場合により適しています。そのため、各特徴に対してマッピングにフィールドを追加することは合理的ではありません。
Python
resp = client.indices.create(
index="my-index-000001",
mappings={
"properties": {
"topics": {
"type": "rank_features"
},
"negative_reviews": {
"type": "rank_features",
"positive_score_impact": False
}
}
},
)
print(resp)
resp1 = client.index(
index="my-index-000001",
id="1",
document={
"topics": {
"politics": 20,
"economics": 50.8
},
"negative_reviews": {
"1star": 10,
"2star": 100
}
},
)
print(resp1)
resp2 = client.index(
index="my-index-000001",
id="2",
document={
"topics": {
"politics": 5.2,
"sports": 80.1
},
"negative_reviews": {
"1star": 1,
"2star": 10
}
},
)
print(resp2)
resp3 = client.search(
index="my-index-000001",
query={
"rank_feature": {
"field": "topics.politics"
}
},
)
print(resp3)
resp4 = client.search(
index="my-index-000001",
query={
"rank_feature": {
"field": "negative_reviews.1star"
}
},
)
print(resp4)
resp5 = client.search(
index="my-index-000001",
query={
"term": {
"topics": "economics"
}
},
)
print(resp5)
Js
const response = await client.indices.create({
index: "my-index-000001",
mappings: {
properties: {
topics: {
type: "rank_features",
},
negative_reviews: {
type: "rank_features",
positive_score_impact: false,
},
},
},
});
console.log(response);
const response1 = await client.index({
index: "my-index-000001",
id: 1,
document: {
topics: {
politics: 20,
economics: 50.8,
},
negative_reviews: {
"1star": 10,
"2star": 100,
},
},
});
console.log(response1);
const response2 = await client.index({
index: "my-index-000001",
id: 2,
document: {
topics: {
politics: 5.2,
sports: 80.1,
},
negative_reviews: {
"1star": 1,
"2star": 10,
},
},
});
console.log(response2);
const response3 = await client.search({
index: "my-index-000001",
query: {
rank_feature: {
field: "topics.politics",
},
},
});
console.log(response3);
const response4 = await client.search({
index: "my-index-000001",
query: {
rank_feature: {
field: "negative_reviews.1star",
},
},
});
console.log(response4);
const response5 = await client.search({
index: "my-index-000001",
query: {
term: {
topics: "economics",
},
},
});
console.log(response5);
コンソール
PUT my-index-000001
{
"mappings": {
"properties": {
"topics": {
"type": "rank_features"
},
"negative_reviews" : {
"type": "rank_features",
"positive_score_impact": false
}
}
}
}
PUT my-index-000001/_doc/1
{
"topics": {
"politics": 20,
"economics": 50.8
},
"negative_reviews": {
"1star": 10,
"2star": 100
}
}
PUT my-index-000001/_doc/2
{
"topics": {
"politics": 5.2,
"sports": 80.1
},
"negative_reviews": {
"1star": 1,
"2star": 10
}
}
GET my-index-000001/_search
{
"query": {
"rank_feature": {
"field": "topics.politics"
}
}
}
GET my-index-000001/_search
{
"query": {
"rank_feature": {
"field": "negative_reviews.1star"
}
}
}
GET my-index-000001/_search
{
"query": {
"term": {
"topics": "economics"
}
}
}
ランク特徴フィールドは rank_features フィールドタイプを使用する必要があります |
|
スコアと負の相関を持つランク特徴は宣言する必要があります | |
ランク特徴フィールドは文字列キーと厳密に正の数値値を持つハッシュでなければなりません | |
このクエリは “政治” トピックに関するドキュメントをランク付けします。 | |
このクエリは “1スター” レビューの数に逆比例してドキュメントをランク付けします。 | |
このクエリは “トピック” フィールドに “経済” 特徴を格納しているドキュメントを返します。 |
rank_features
フィールドは単一値の特徴と厳密に正の値のみをサポートします。多値フィールドおよびゼロまたは負の値は拒否されます。
rank_features
フィールドはソートや集計をサポートせず、rank_feature
または term
クエリを使用してのみクエリできます。
term
クエリは rank_features
フィールドに対して、マッチした保存された特徴値を提供された boost
で掛け算することによってスコア付けされます。
rank_features
フィールドは精度のために9ビットの有効桁を保持するだけで、これは約0.4%の相対誤差に相当します。
スコアと負の相関を持つランク特徴は、positive_score_impact
を false
に設定する必要があります(デフォルトは true
です)。これは、rank_feature
クエリによってスコアリング式を変更するために使用され、特徴の値が増加するのではなく、スコアが減少するようにします。