postgresql magic魔法typo错别字corrector校正in postgres邮政?

9vw9lbht  于 12个月前  发布在  PostgreSQL
关注(0)|答案(1)|浏览(91)

我在理解PostgreSQL文档时遇到了一些麻烦。显然,示例是文本搜索类似于“caterpiler”的单词。示例取自documentation 41.3。相关查询复制如下。物化视图部分不是问题的核心。

CREATE EXTENSION file_fdw;
CREATE SERVER local_file FOREIGN DATA WRAPPER file_fdw;
CREATE FOREIGN TABLE words (word text NOT NULL)
  SERVER local_file
  OPTIONS (filename '/usr/share/dict/words');

个字符
解释分析

Limit  (cost=11583.61..11583.64 rows=10 width=32) (actual time=1431.591..1431.594 rows=10 loops=1)
   ->  Sort  (cost=11583.61..11804.76 rows=88459 width=32) (actual time=1431.589..1431.591 rows=10 loops=1)
         Sort Key: ((word <-> 'caterpiler'::text))
         Sort Method: top-N heapsort  Memory: 25kB
         ->  Foreign Scan on words  (cost=0.00..9672.05 rows=88459 width=32) (actual time=0.057..1286.455 rows=479829 loops=1)
               Foreign File: /usr/share/dict/words
               Foreign File Size: 4953699
 Planning time: 0.128 ms
 Execution time: 1431.679 ms


我假设word <-> 'catepiler'使用的是tsquery <-> tsquery语法,但在这个查询中它是如何工作的,它是如何产生输出顺序的?还有,EXPLAIN ANALYZE中的'caterpiler'::text只是计划器默认将所有字符串都视为text,还是意味着使用了<->的其他定义?
此外,是否正在查找字典和/或同义词词典,或者这是<->的一般特性?文件路径确实看起来像字典,但它似乎并没有被用作字典。
谢谢

but5z9lq

but5z9lq1#

我假设单词<->'catepiler'使用tsquery <->tsquery语法
不,它使用的是pg_trgmtext <-> text运算符。如果pg_trgm不存在,那么你会得到一个错误。
另外,EXPLAIN ANALYZE中的“caterpiler”::text是否只是规划器默认将所有字符串视为文本,或者这意味着正在使用的其他定义<->?
对于后者,使用了不同的定义。
文件路径确实看起来像一个字典,但它似乎并没有被用作字典。
这是一个单词列表,在日常意义上并不是一个真正的字典,但尽管如此,这就是文件的名称。注意,这个例子只是使用了一个经常存在于类UNIX系统上的文件。无论是文件,还是它的名称选择,都不是PostgreSQL的一部分。它只是一个方便的例子。

相关问题