我有一本以这种方式建造的字典:
DROP TEXT SEARCH DICTIONARY IF EXISTS simple_english_with_stopwords CASCADE;
CREATE TEXT SEARCH DICTIONARY simple_english_with_stopwords (TEMPLATE = pg_catalog.simple);
CREATE TEXT SEARCH CONFIGURATION simple_english_with_stopwords (copy = english);
ALTER TEXT SEARCH CONFIGURATION simple_english_with_stopwords
ALTER MAPPING FOR asciihword, asciiword, hword, hword_asciipart, hword_part, word
WITH simple_english_with_stopwords;
其中不仅应包括通用术语,还应包括停用词。
基于此,我期待类似的东西:
SELECT to_tsvector('open plan') @@ to_tsquery('off <-> plan');
会false
像off
文本中没有的那样返回。但由于某种原因它又回来了true
。
如果我只跑:
# SELECT to_tsquery('off <-> plan');
to_tsquery
------------
'plan'
(1 row)
这解释了为什么前面的表达式返回 true。但是为什么查询删除了这个off
词呢?任何想法?
您已经创建了一个新词典等,但您没有使用它。
或者:
如果你想使用 FTS 索引,第一个更详细的选项更好,否则你会遇到可变性问题。