Kouhei Sutou
kou****@clear*****
2014年 9月 30日 (火) 11:41:09 JST
須藤です。 In <54294****@fdiar*****> "[groonga-dev,02829] Re: IN NATURAL LANGUAGE MODEにおける検索スコア" on Mon, 29 Sep 2014 14:23:59 +0200, Kazuhiko <kazuh****@fdiar*****> wrote: > On 27/09/2014 11:10, Kouhei Sutou wrote: >> それぞれ順にやっていくのはどうですか? >> >> たぶん、 >> >> 1. 今の状態をそのままドキュメントにまとめる >> (不満はあるかもしれないけど) >> 2. 不満があるところを改善する >> >> という順番がよいような気がします。 >> >> 詳細は流れを決めてから順に整理していくのがいいんじゃないかと >> 思います。 > > はい、そうですね。 ありがとうございます! > natural language mode(というか類似文書検索)のスコアについては、すでに > ドキュメントに仕様が書かれているので、boolean modeのスコアの仕様をまとめ > られれば良さそうです。 よろしくお願いします!とても助かります。 >> 私の認識では、Groongaの全文検索は、単語・フレーズ(トークンではなく >> 前後の並びも一致させる)が条件にヒットしなければ0、ヒットすれば、単語 >> ・フレーズが文書中に含まれる数がスコアになると思っています。 > > それに加えて、'-word'の分のスコアが反映されると思うのですが、以下のスコ > アの違いの理由がよく分かりません。 '-word'のスコアがわかるとドキュメントをまとめられそうという ことですよね。 で、違いがわからないというのは「先頭に-wordがあるとき」と「2 番目に-wordがあるとき」の違い、というのであっていますか? Groongaでは先頭の「-word」(wordを含まない文書を検索)はサポー トしていません。これは、非常に重いクエリーになるからです。 ただ、Mroongaでは、やんごとなき理由で使いたいことがあるとい うことで、重いのを受け入れられるなら使えるよ、という位置づけ で先頭の「-word」をサポートしています。 内部的には 全部のレコードを選択 → そこからwordにマッチするレコードを引く という処理をしています。で、「全部のレコードを選択」のときに すべてのレコードにスコアが+1されます。なので、先頭に「-word」 を書くとスコアが全体的に+1されます。 ただ、繰り返しになりますが、先頭の「-word」は重いのでできれ ば使って欲しくないです。本当に使う必要があるの!?と自問を重 ねたうえで、しょうがない。。。と思って使う、くらいの感じで決 断して欲しい感じです。 これでまとめられそうでしょうか!? -- 須藤 功平 <kou****@clear*****> 株式会社クリアコード <http://www.clear-code.com/> Groongaベースの全文検索システムを総合サポート: http://groonga.org/ja/support/ パッチ採用 - プログラミングが楽しい人向けの採用プロセス: http://www.clear-code.com/recruitment/ コードリーダー育成支援 - 自然とリーダブルコードを書くチームへ: http://www.clear-code.com/services/code-reader/