2017-02-17 11 views
1

私は文書内にランキングのフィールドを持っています:値が低いほどスコアが高くなります。最初のものが最善ですが、最後のものが最悪です。したがって、ランキング1は100万を上回ります。Elasticsearchでは、ランキング(1位、2位、3位...)フィールドの値でスコアをどのように引き上げますか?

これまでのところ、フィールド値自体をscore_query and field_value_factorで上げることができましたが、上位のランクのランクを持つドキュメントには、より高いブーストが与えられます。

"field_value_factor": { 
    "field": "rank", 
    "factor": 1.2, 
    "modifier": "sqrt", 
    "missing": 1 
} 

別の修飾語を使用する必要がありますか?それとも私はこれについて完全に間違っているのだろうか?また、私は_scoreに影響を与える他の要因があるので、私はそれだけでそれを分類したくないです。

+0

です。 (このサイトを7年以上頻繁に利用してきた人として、これまでに知っておかなければなりません) –

+0

おっと、そこにタグがあります。申し訳ありません。私は質問をしたので、しばらくしている。それをキャッチしてくれてありがとう@DanMašek – JayNCoke

+0

心配はありません、それは起こることができます:)それは "関連性"とタグ付けされた何かにそれを見て実際にちょっと面白かった:D –

答えて

1

あなたが実際に上位になるように、低い値が意志になり、rank = 1が行う1つのみのスコアを取得します、rank値、すなわち1/rankを往復移動させる修飾因子機能を取る必要がありますタグを誤用しないでください - それは[C++ライブラリブースト](http://stackoverflow.com/tags/boost/info)に関連したこの質問に何もすることがないようですreciprocal

"field_value_factor": { 
    "field": "rank", 
    "factor": 1.2, 
    "modifier": "reciprocal", 
    "missing": 1 
} 
+0

ああええ、それは意味をなさない。ありがとう! – JayNCoke