高見 直輝
takam****@orega*****
2016年 1月 18日 (月) 15:36:28 JST
高見です。
> > select lower(pathcombine(rootdir::text, path)) as tmp from TEST_TABLE
> > where
> > lower(pathcombine(rootdir,path)) LIKE lower('\st\新しいフォルダー\フォルダ%') AND
> > lower(pathcombine(rootdir,path)) @@ lower('"30"');
> >
> > で同じ挙動になるんじゃないかと思います。
>
> 残念ながら、改善しませんでした。
> どうも、LIKE指定が在ると無条件で結果が0件になって居るような感じです。
自己レスになりますが、LIKEを使ったときと%%を使ったときのPGROONGAの
DEBUGログを取得しましたので報告します。
まず、LIKEの前方一致ではなく、部分一致で検索したとき。(結果:0件)
【SQL】
select lower(pathcombine(rootdir::text, path)) as tmp from TEST_TABLE
where
lower(pathcombine(rootdir,path)) LIKE lower('%\st\新しいフォルダー\フォルダ%') AND
lower(pathcombine(rootdir,path)) @@ lower('"30"');
2016-01-18 15:00:24.531000|i| [object][search][index][key][exact] <Lexicon16728_0.index>
2016-01-18 15:00:24.531000|i| grn_ii_sel > (st新しいフォルダーフォルダ)
2016-01-18 15:00:24.531000|i| exact: 0
2016-01-18 15:00:24.531000|i| unsplit: 0
2016-01-18 15:00:24.531000|i| partial: 0
2016-01-18 15:00:24.531000|i| hits=0
2016-01-18 15:00:24.531000|i| [object][search][index][key][exact] <Lexicon16728_0.index>
2016-01-18 15:00:24.531000|i| grn_ii_sel > (30)
2016-01-18 15:00:24.531000|i| n=1 (30)
2016-01-18 15:00:24.531000|i| exact: 0
2016-01-18 15:00:24.531000|i| hits=0
次に、%%で検索したとき。(結果:4712件)
select lower(pathcombine(rootdir::text, path)) as tmp from TEST_TABLE
where
lower(pathcombine(rootdir,path)) %% lower('\st\新しいフォルダー\フォルダ') AND
lower(pathcombine(rootdir,path)) @@ lower('"30"');
2016-01-18 15:03:23.468000|i| [object][search][index][key][exact] <Lexicon16728_0.index>
2016-01-18 15:03:23.468000|i| grn_ii_sel > (\st\新しいフォルダー\フォルダ)
2016-01-18 15:03:23.468000|i| n=16 (\st\新しいフォルダー\フォルダ)
2016-01-18 15:03:23.500000|i| exact: 20342
2016-01-18 15:03:23.500000|i| hits=20342
2016-01-18 15:03:23.500000|i| [object][search][index][key][exact] <Lexicon16728_0.index>
2016-01-18 15:03:23.500000|i| grn_ii_sel > (30)
2016-01-18 15:03:23.500000|i| n=1 (30)
2016-01-18 15:03:23.500000|i| exact: 4712
2016-01-18 15:03:23.500000|i| hits=4712
最後に、LIKE検索で\をエスケープした結果です。(結果:0件)
select lower(pathcombine(rootdir::text, path)) as tmp from TEST_TABLE
where
lower(pathcombine(rootdir,path)) LIKE lower('%\\st\\新しいフォルダー\\フォルダ%') AND
lower(pathcombine(rootdir,path)) @@ lower('"30"');
2016-01-18 15:04:25.734000|i| [object][search][index][key][exact] <Lexicon16728_0.index>
2016-01-18 15:04:25.734000|i| grn_ii_sel > (\st\新しいフォルダー\フォルダ)
2016-01-18 15:04:25.750000|i| n=16 (\st\新しいフォルダー\フォルダ)
2016-01-18 15:04:25.781000|i| exact: 20342
2016-01-18 15:04:25.781000|i| hits=20342
2016-01-18 15:04:25.781000|i| [object][search][index][key][exact] <Lexicon16728_0.index>
2016-01-18 15:04:25.781000|i| grn_ii_sel > (30)
2016-01-18 15:04:25.781000|i| n=1 (30)
2016-01-18 15:04:25.781000|i| exact: 4712
2016-01-18 15:04:25.781000|i| hits=4712
2つ目と3つ目のログが同じに見えるのに、何故結果が異なるのかは不明です。
> 一つ確認なのですが、1.0.1を適用することで状況が改善する可能性はあります
> でしょうか?
> 現在1.0.0で動かしています。
-----------------------------
高見 直輝 <takam****@orega*****>
株式会社オレガ
TEL:03-3267-0150
FAX:03-3267-0180