防止在PostgreSQL全文搜索中以#开头的词汇

时间:2017-06-12 09:31:31

标签: postgresql full-text-search stemming

基本上,我希望能够为这样的查询获得完全匹配(包括主题标签):

=#SELECT to_tsvector('english', '#adoption');
 to_tsvector
-------------
 'adopt':1

相反,我想要以#开头的单词,看看:

=#SELECT to_tsvector('english', '#adoption');
 to_tsvector
-------------
 '#adoption':1

这可以用psql全文搜索吗?

1 个答案:

答案 0 :(得分:1)

在搜索或编制索引之前,您可以将每个#字符替换为您在文本中未使用的其他字符,但这会改变解析器的解释:

test=> SELECT alias, lexemes FROM ts_debug('english', '#adoption');
┌───────────┬─────────┐
│   alias   │ lexemes │
├───────────┼─────────┤
│ blank     │         │
│ asciiword │ {adopt} │
└───────────┴─────────┘
(2 rows)

test=> SELECT alias, lexemes FROM ts_debug('english', '/adoption');
┌───────┬─────────────┐
│ alias │   lexemes   │
├───────┼─────────────┤
│ file  │ {/adoption} │
└───────┴─────────────┘
(1 row)