morit****@razil*****
morit****@razil*****
2007年 7月 5日 (木) 14:57:30 JST
こんにちは。森です。 >>> kousa****@nttda***** さんは書きました: > こんにちは、幸坂です。 > > 「セクションを用いた場合と用いない場合の、検索のスコアが異なる。」 > という疑問が生じましたので、質問させていただきます。 その通りでした!! 現状のコードでは、セクション毎の重みが指定されると、そちらが優先され、 他の重みパラメータは無視されるようになっています。 修正可能かどうか検討してみます。 > 環境: > 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 mailing list > Senna****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/senna-dev > -- morita