[Senna-dev 713] Re: 類似文書検索

アーカイブの一覧に戻る

morit****@razil***** morit****@razil*****
2007年 10月 30日 (火) 20:20:38 JST


森です。こんにちは。

senna rev603でこの問題を修正できたと思います。

なお、「*S1 "雨です"」 のように
検索語が部分一致しないといけないパタンについては、
もともと類似文書検索ではサポートしないつもりだったのですが、
今回試験的に実装してみました。

試してみていただければ幸いです。

>>> morit****@razil***** さんは書きました:
> 森です。こんにちは。
> 
> ご報告ありがとうございます!! 確かにこれは問題ですね。
> 対処させていただきたいと思います。
> 
> >>> kousa****@nttda***** さんは書きました:
> > 幸坂です。こんにちは。
> > 
> > 類似文書検索について、正常に検索できない問題がありましたので、
> > 報告させて頂きます。
> > 
> > Senna1.0.9
> > MeCabを利用したインデックスを構築。
> > レコードは「豪雨」のみ。
> > 
> > パターン1) 「*S1 "豪雨です"」   ->  ヒット
> > パターン2) 「*S1 "今日は豪雨です"」   ->  ヒットせず (おかしい)
> > 
> > 内部を見てみると、パターン1の場合は、
> > 「豪雨」「です」
> > と分割して、それぞれの単語がインデックスに存在するかチェックしています。
> > 
> > しかし、パターン2の場合は、
> > 「今日」「は」「豪雨」「です」
> > と分割して、「今日」がインデックスに存在するかチェックします。
> > しかし、インデックスに存在しないため、なぜかループを抜けてしまい、
> > 「は」「豪雨」「です」
> > がチェックされていないように見受けられます。
> > 
> > 以下のように変更すると、それっぽい結果が返ってきます。
> > 
> > diff RELEASE-1.0.9/lib/index.c RELEASE-1.0.9_fix/lib/index.c
> > 2211c2211
> > <   while (!lex->status) {
> > ---
> > >   while (lex->status != sen_lex_done) {
> > 2235a2236
> > >   if (!limit) { return sen_success; }
> > 
> > diff RELEASE-1.0.9/lib/lex.c RELEASE-1.0.9_fix/lib/lex.c
> > 292c292
> > <   if (lex->status) { return SEN_SYM_NIL; }
> > ---
> > >   if (lex->status == sen_lex_done) { return SEN_SYM_NIL; }
> > 315c315
> > <   } else {
> > ---
> > >   }  {
> > 
> > しかし上記の対応では、
> > 「*S1 "雨です"」
> > とすると、エラーメッセージが返ってしまいます・・・。
> > |e| cursor open failed (2)
> > 検索キーワードが部分一致してしまうとエラーになるようです。
> > 
> > N-gramに関しては調べていません・・・。
> > 
> > 以上です。
> > 
> > _______________________________________________
> > Senna-dev mailing list
> > Senna****@lists*****
> > http://lists.sourceforge.jp/mailman/listinfo/senna-dev
> > 
> --
> morita
> 
> _______________________________________________
> Senna-dev mailing list
> Senna****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/senna-dev
> 
--
morita




Senna-dev メーリングリストの案内
アーカイブの一覧に戻る