[Senna-dev 626] セクションを用いた検索のスコア

Back to archive index

kousa****@nttda***** kousa****@nttda*****
2007年 7月 4日 (水) 11:12:48 JST


こんにちは、幸坂です。

「セクションを用いた場合と用いない場合の、検索のスコアが異なる。」
という疑問が生じましたので、質問させていただきます。

環境:
Senna1.0.7

擬似コード:
インデックス構築時
index = sen_index_create(path, KEY_SIZE,
          SEN_INDEX_NGRAM|SEN_INDEX_NORMALIZE, 512, enc);

c1 = "testtesttestこんにちはこんにちは"
sen_values *newvalues = sen_values_open();
rc = sen_values_add(newvalues, c1, strlen(c1), 0);
rc = sen_index_update(index, (void *)tid, 1, NULL, newvalues);
rc = sen_values_close(newvalues);

検索時
c2 = "*W1:5 testtesttest";
q = sen_query_open(c2, strlen(c2), sen_sel_or, 16, enc);
sen_query_exec(index, q, record, op);

上記のように、セクションを用いた検索を行うと、
セクションを用いない場合と同様の検索スコア「5」を取得できます。
しかし、検索キーワードのc2を変えると
c2 = "test"; → スコア「3」 (正しい)
c2 = "*W1:5 test"; → スコア「5」(おかしい)
上記のようにおかしなスコアになってしまいます。
部分一致検索であるため、スコア3が正しいと思うのですが・・・。

また、「~」などを用いた場合も*W1:5を付けたときと付けない場合で、
スコアが異なります。
c2 = "こんにちは ~testtesttest"; → スコア「9(=5+5-1)」(正しい)
c2 = "*W1:5 こんにちは ~testtesttest"; → スコア「15」(おかしい。
「~」が解釈されていない?)


なにかしら間違った使用をしているかもしれません。
セクションを用いた場合は、スコア計算方法が異なるのかもしれません。
アドバイス頂けないでしょうか。
よろしくお願いします。




Senna-dev メーリングリストの案内
Back to archive index