[groonga-dev,04702] PGroongaでTokenFilterStopWordを使うと検索がヒットしない

Back to archive index
川上 hakuh****@yahoo*****
2018年 10月 30日 (火) 20:24:35 JST


お世話になります。川上です。


(初歩的な質問で申し訳ありませんが、TokenFilterStopWordの使用方法がいまいちわかっておらず。。)

これまでTokenFilterは使ってこなかったのですが、StopWordを使いたく、INDEXを変更して

TokenFilterStopWordを使用するようにしたところ、これまで検索できていたものが検索できなくなりました。

(INDEXを戻せば検索できるようになります)


設定等、何か足りないものがあるのでしょうか?

それとも、そもそもTokenFilterについての理解が間違っているのでしょうか?


○再現方法

-- CREATE TABLE & INSERT
CREATE TABLE item (
   name TEXT
);
INSERT INTO item VALUES ('kawa.kami');

-- CREATE TABLE & INSERT stop word
CREATE TABLE terms (
   item_name varchar(64) PRIMARY KEY,
   is_stop_word boolean
);
INSERT INTO terms VALUES ('.', true);


-- INDEX(TokenFilterStopWordなしならヒットする)
CREATE INDEX pgroonga_item_name_idx ON item USING pgroonga (name);
SELECT count(*) FROM item WHERE name &@~ 'kawa';
  count
-------
      1

-- INDEX(TokenFilterStopWordありならヒットしなくなる)
DROP INDEX pgroonga_item_name_idx;
CREATE INDEX pgroonga_item_name_idx ON item USING pgroonga (name) WITH 
(plugins='token_filters/stop_word', token_filters='TokenFilterStopWord');
SELECT count(*) FROM item WHERE name &@~ 'kawa';
  count
-------
      0


○期待する動作

「.」がStopWordに登録されているので、「kawakami」で検索して1件ヒットする

(が、現状はStopWordどころか、「&@~」だと何で検索してもヒットしない状態)



以上、よろしくお願いいたします。



More information about the groonga-dev mailing list
Back to archive index