2016-05-02 6 views
0

私はES 1.4からES 2.3にアップグレードしており、ドキュメントのスコアリングをテストしている間に同じクエリのExplain APIの出力の違いに気づいた:ES 1.4とES 2.3のAnalyzer APIを使用して異なる位置値を取得

{ 
    "value": 0.9890914, 
    "description": "fieldWeight in 3931, product of:", 
    "details": [ 
    { 
     "value": 5.8309517, 
     "description": "tf(freq=34.0), with freq of:", 
     "details": [ 
     { 
      "value": 34, 
      "description": "termFreq=34.0", 
      "details": [] 
     } 
     ] 
    }, 
    { 
     "value": 5.428089, 
     "description": "idf(docFreq=117, maxDocs=9885)", 
     "details": [] 
    }, 
    { 
     "value": 0.03125, 
     "description": "fieldNorm(doc=3931)", 
     "details": [] 
    } 
    ] 
} 

とES 1.4.2から私が手::

{ 
    "value": 0.9319723, 
    "description": "fieldWeight in 403, product of:", 
    "details": [ 
    { 
     "value": 5.8309517, 
     "description": "tf(freq=34.0), with freq of:", 
     "details": [ 
     { 
      "value": 34, 
      "description": "termFreq=34.0" 
     } 
     ] 
    }, 
    { 
     "value": 5.114622, 
     "description": "idf(docFreq=226, maxDocs=13899)" 
    }, 
    { 
     "value": 0.03125, 
     "description": "fieldNorm(doc=403)" 
    } 
    ] 
} 
0私が手ES 2.3.0から
{ 
    "query": { 
     "match": { 
      "article_content": "news" 
     } 
    } 
} 

curl -XGET 'localhost:9200/new_index/_analyze' -d '{ 
    "analyzer" : "custom_text_analyzer", 
    "text" : "...." 
}' 

をし、ES 1.4.2のために、私は

を使用:ES 2.3のために私が使用

:私はそうAPIを分析し使用していてもすることを確認し、私のcustom_analyzerと間違って何かがあるかもしれないと思いましたES 2.3.0 0123について

curl -XGET 'localhost:9210/new_index2/_analyze?analyzer=custom_text_analyzer' -d '...' 

両方の呼び出しがトークンの同じ数をもたらし、唯一の違いは、"position"の値でしたES 1.4.2

{ 
    "tokens": [ 
    { 
     "token": "show", 
     "start_offset": 0, 
     "end_offset": 4, 
     "type": "<ALPHANUM>", 
     "position": 1 
    }, .... 

については ​​

注:インデックスの両方がカウント数と内容は同じ文書を持って

  • 私がテストした文書には、289個のトークン

  • カスタム・アナライザは、両方のインデックスに同じであるがありました。 (私は2回チェックしました)

私はちょうど問題になる可能性についていくつかの洞察をしたかったですか?

答えて

1

得点の差はここにある:

2.3.0

{ 
    "value": 5.428089, 
    "description": "idf(docFreq=117, maxDocs=9885)", 
    "details": [] 
} 

1.4.2

{ 
    "value": 5.114622, 
    "description": "idf(docFreq=226, maxDocs=13899)" 
} 

あなたがいるように見えるので、そうIDFが異なっています異なる数の文書と異なる頻度の用語を持つそれらの文書同数の文書があるとしますが、maxDocs takes into consideration all documents in a Lucene shardです。 すべてには、マークされたままの文書が含まれています。

私の想定では、1.4.xインデックスにもいくつかの削除されたドキュメント(セグメントをマージすることから物理的にディスクから削除されていない)があり、これらはスコア計算に少し影響します。削除されたドキュメントの数を確認するには、curl -XGET "http://localhost:9200/_cat/indices?v"を入力し、_optimize API(curl -XPOST "http://localhost:9200/my_index/_optimize?max_num_segments=1")を使用して強制的にマージできます。ただし、最適化では少しのリソースしか使用しないので、クラスタがビジーでないときに最適化を行うことに注意してください。

+0

返信いただきありがとうございます。私は、es 2.3と1.4も削除された文書がたくさんあることに気がついたので、まったく同じにするために、私はそれらの両方を最適化しました。両方とも300,000のドキュメントを持っているので、時間がかかりませんでした。しかし2.3の場合でも 'idf(docFreq = 108、maxDocs = 9543)'を得て、1.4では 'idf(docFreq = 226、maxDocs = 13899)'を得ています。他に何かありますか? –

+0

これで、両方のインデックスで削除されたドキュメントが0になりました。 –

+0

はい、私はそれを見ることができます。 –

関連する問題