お世話になります。川上です。
(初歩的な質問で申し訳ありませんが、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どころか、「&@~」だと何で検索してもヒットしない状態)
以上、よろしくお願いいたします。