トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

Elasticsearch

[検索技術]

Elasticsearch

  • 主に検索時のスコアの出し方について

  スコアリングの算出方式

Elasticsearchの検索スコア式を変える方法:

  • デフォルト式
double tf = Math.sqrt(doc.freq);                                      // Elasticsearchに格納されている時点でドキュメントには出現頻度(=doc_freq)がついているのかなぁ
double idf = Math.log((field.docCount+1.0)/(term.docFreq+1.0)) + 1.0; // 
double norm = 1/Math.sqrt(doc.length);                                // 

return query.boost * tf * idf * norm;
  • 用語の意味
    • TF = Term Frequency
    • IDF = Inverse Document Frequency
  • Term Frequency
    • tf(term frequency)とは、そのままの意味。ある単語の出現頻度である。ターム頻度。ある単語tがある文書d中に現れる回数を、文書d中の全ての単語数(重複を許す)で割った値を意味する。
  • Inverse Document Frequency
    • tf-idf(tf-idf重み)とは、tf重みとidf重みの積で与えられる。情報検索で最も有名で良く利用される重み付けの方法である。tf-idfの値は、文書中のタームの出現頻度と、文書集合中のタームの希少さに応じて増加します。式は以下の通り。(t=ターム、d=ドキュメント)ここでも、対数の底は重要でないので、なんでも良い

W%5F%7Bt%2Cd%7D+%3D+log%281+%2B+tf%5F%7Bt%2Cd%7D%29+%5Ccdot+log+%5Cfrac%7BN%7D%7Bdf%5Ft%7D+

  • tf-idfを重みとして利用した場合の、ある文書のスコアは、以下のようになる。(q=クエリ、d=ドキュメント)

Score+%3D+%5CSigma%5F%7Bt+%5Cin+q+%5Ccap+d%7D+tf+%5Ccdot+idf%5F%7Bt%2Cd%7D+

お名前: コメント: