[groonga-dev,02815] Re: IN NATURAL LANGUAGE MODEにおける検索スコア

Back to archive index

Kouhei Sutou kou****@clear*****
2014年 9月 26日 (金) 17:15:15 JST


須藤です。

In <5424F****@fdiar*****>
  "[groonga-dev,02814] Re: IN NATURAL LANGUAGE MODEにおける検索スコア" on Fri, 26 Sep 2014 07:09:21 +0200,
  Kazuhiko <kazuh****@fdiar*****> wrote:

> On 25/09/2014 15:26, Kouhei Sutou wrote:
>>> MySQL/MariaDBの変数で変更できたらいいなというイメージだったのですが、ク
>>> エリ内のプラグマの方が柔軟に変更できて嬉しいのかもしれません。
>> 
>> 変数ですか?グローバルに状態が変わるのであんまりうれしそうな
>> 気がしそうなんですが、便利ですかねぇ。
> 
> なぜそう思ったかというと、「その方が便利」と思ったからではなく、この変数
> の性格が、mroonga_match_escalation_threshold と似ていると思ったからです。
> http://mroonga.org/ja/docs/reference/server_variables.html#mroonga-match-escalation-threshold

なるほど。
たしかに似ていますね。

>>> でも、「*S1"..."」演算子は、boolean modeでだけ使えて、その結果のスコアは
>>> natural language mode相当です、っていうのは分かりにくすぎる仕様だと感じ
>>> ます。その演算子のついていない部分については、出現数=スコアで、差があり
>>> すぎますし。
>> 
>> うーん、どういうユースケースを想定していますか?
> 
> 実際のところ、'*S"word1 word2" word3' みたいなクエリは想定していません
> が、この仕様はどういうドキュメントになるんだろうな?と疑問に思ったのでした。
> 
> * natural language modeのクエリは、'*S"word1 word2 ..."' in boolean mode
> と等価です。
> * その際のスコアは、通常のboolean検索とは異なり、... のように決定されます。
> 
> という感じでしょうか? でもやっぱり、'boolean' modeなのに巨大なスコアは
> どうよ? というのは少しひっかかりますが、仕方がないのかな。

「boolean」ってスコアは小さめっていう意味合いもあったんでし
たっけ。私は、ANDとかORを使って検索できる、っていう意味なの
かなぁと思っていました。

> それはそれとして、無指定natural language modeでのデフォルトが良くなって
> ほしいのが一番の希望なのですが、あれじゃだめでしょうか?

このあたりの判断は森さんにお任せしたいです。
森さん、↓はどう思います?

diff --git a/lib/ii.c b/lib/ii.c
index d10b84d..e20bdce 100644
--- a/lib/ii.c
+++ b/lib/ii.c
@@ -5695,7 +5695,9 @@ grn_ii_similar_search(grn_ctx *ctx, grn_ii *ii,
     ? (optarg->similarity_threshold > GRN_HASH_SIZE(h)
        ? GRN_HASH_SIZE(h)
        : optarg->similarity_threshold)
-    : (GRN_HASH_SIZE(h) >> 3) + 1;
+    : (GRN_HASH_SIZE(h) < 8
+       ? GRN_HASH_SIZE(h)
+       : ((GRN_HASH_SIZE(h) - 8) >> 3) + 8);
   if (GRN_HASH_SIZE(h)) {
     grn_id j, id;
     int w2, rep;

> (ヘヴィユーザのみなさんはboolean modeしか使っていないとか...)

もしかしたら、なんですけど、かずひこさんが求めている挙動って

  "word1 word2 word3" IN BOOLEAN MODE

(word1 OR word2 OR word3)だったりしないかなぁと思いました。


-- 
須藤 功平 <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/




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