我正在使用以下文本搜索配置:
CREATE TEXT SEARCH DICTIONARY tsd
(TEMPLATE = pg_catalog.SIMPLE);
CREATE TEXT SEARCH CONFIGURATION tsc_test
(COPY = german);
ALTER TEXT SEARCH CONFIGURATION tsc_test
ALTER MAPPING FOR asciihword, asciiword, hword, hword_asciipart, hword_part, word
WITH tsd;
我正在尝试对表格执行全文搜索,但我无法弄清楚如何正确定义文本搜索配置。我的问题是
SELECT to_tsvector('tsc_test', 'foo bar');
和
SELECT to_tsvector('tsc_test', 'foo_bar');
产生相同的tsvector
对象,因为_
(和其他,如#(){}
等)被解释为空格符号(请参阅SELECT ts_debug ('tsc_test', 'foo_bar');
)。然而,我需要它们是不同的。
有没有办法调整我的文本搜索配置,使其仅将空格
视为单词分隔符而不是其他任何东西?
没有真正好的方法可以做到这一点。
一种解决方法可能是将不是空格或字符的所有内容替换为 - 比如说 - 一个数字:
当然,如果你的文本中有零,那会造成麻烦,但正如我所说,没有完全令人满意的方法可以做到这一点。