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」(おかしい。 「~」が解釈されていない?) なにかしら間違った使用をしているかもしれません。 セクションを用いた場合は、スコア計算方法が異なるのかもしれません。 アドバイス頂けないでしょうか。 よろしくお願いします。