用于全文的Postgresql前缀通配符

我正在尝试使用Postgresql运行全文查询,该查询可以使用通配符进行部分匹配

在搜索词后面加一个后缀通配符似乎很容易,但是我不知道如何指定前缀通配符

例如,我可以使用..之类的工具轻松地执行后缀搜索

选择“t1”。*
从“t1”
其中(to_tsvector('simple','t1''city')@@to_tsquery('simple','don:'))

应返回与“伦敦”匹配的结果

然而,我似乎不能做前缀搜索像

选择“t1”。*
从“t1”
其中(to_tsvector('simple','t1','city')@@to_tsquery('simple',':*don'))

理想情况下,我希望在搜索词的前面和结尾加一个通配符前缀,比如

选择“t1”。*
从“t1”
其中(to_tsvector('simple','t1.'city')@@to_tsquery('simple',':*don:'))

我可以使用类似的条件,但我希望从Postgres中全文搜索功能的性能中获益

全文搜索有利于查找单词,而不是子字符串

对于子字符串搜索,您最好使用如“%don%”和PostgreSQL 9.1提供的pg\u trgm扩展名,以及使用gin(column\u name gin\u trgm\u ops)使用gist(column\u name gist\u trgm\u ops)索引。但是您的索引将非常大(甚至比表大几倍),并且写入性能不是很好

有一个非常好的例子,使用pg_trgm在depesz blog的select*上搜索子字符串

发表评论