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

Back to archive index

Kazuhiko kazuh****@fdiar*****
2014年 9月 26日 (金) 14:09:21 JST


こんにちは。

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

On 26/09/2014 04:40, Kouhei Sutou wrote:
> In <20140****@cozmi*****>
>   "[groonga-dev,02808] Re: IN NATURAL LANGUAGE MODEにおける検索スコア" on Thu, 25 Sep 2014 21:50:29 +0900 (JST),
>   Kouhei Sutou <kou****@cozmi*****> wrote:
> 
>> AGAINST('*S1"a b c"' IN BOOLEAN MODE)というように使ってくだ
>> さい。「1」の部分がsimilarity_thresholdになります。
> 
> と書いたように、BOOLEAN MODEで使います。
> 
> MroongaではNATURAL LANGUAGE MODEは類似文書検索と等価です。

なるほど。その説明でよく分かりました。
Mroongaの向こうのGroongaで何がどうなるかを理解すると、Mroongaの挙動が理
解できる、ということですね。

>> でも、「*S1"..."」演算子は、boolean modeでだけ使えて、その結果のスコアは
>> natural language mode相当です、っていうのは分かりにくすぎる仕様だと感じ
>> ます。その演算子のついていない部分については、出現数=スコアで、差があり
>> すぎますし。
> 
> うーん、どういうユースケースを想定していますか?

実際のところ、'*S"word1 word2" word3' みたいなクエリは想定していません
が、この仕様はどういうドキュメントになるんだろうな?と疑問に思ったのでした。

* natural language modeのクエリは、'*S"word1 word2 ..."' in boolean mode
と等価です。
* その際のスコアは、通常のboolean検索とは異なり、... のように決定されます。

という感じでしょうか? でもやっぱり、'boolean' modeなのに巨大なスコアは
どうよ? というのは少しひっかかりますが、仕方がないのかな。

それはそれとして、無指定natural language modeでのデフォルトが良くなって
ほしいのが一番の希望なのですが、あれじゃだめでしょうか?
(ヘヴィユーザのみなさんはboolean modeしか使っていないとか...)

かずひこ




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