基本上,我希望能够得到如下查询的精确匹配(包括标签):
=#SELECT to_tsvector('english', '#adoption');
to_tsvector
-------------
'adopt':1
相反,我希望以#开头的单词可以看到:
=#SELECT to_tsvector('english', '#adoption');
to_tsvector
-------------
'#adoption':1
psql全文搜索是否可以实现这一点?
最佳答案
在搜索或索引之前,可以将每个#
字符替换为文本中不使用的其他字符,但这会更改解析器的解释:
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)