gpt4 book ai didi

Postgresql 全文匹配意外

转载 作者:行者123 更新时间:2023-11-29 11:44:19 25 4
gpt4 key购买 nike

查看以下查询:

1. select to_tsvector('xyz-abc-testbed') @@ to_tsquery('abc')  # true
2. select to_tsvector('xyz/xyz-abc-testbed') @@ to_tsquery('abc') # false

然后我意识到:

select to_tsvector('xyz-abc-testbed')
to_tsvector
----------------------------------------------
'abc':3 'testb':4 'xyz':2 'xyz-abc-testb':1

但是

select to_tsvector('xyz/xyz-abc-testbed')
to_tsvector
----------------------------------------------
'xyz/xyz-abc-testbed':1

看起来“/”对 to_tsvector 的结果影响很大。但是我没有在 PG 文档中找到解释。

请解释“/”如何影响 tv_tsvector 或指出一些解释该问题的文档。提前致谢。

最佳答案

全文搜索处理的第一步是解析器,它将字符串拆分为标记并使用启发式方法为它们分配类型。进一步处理取决于类型。

函数 ts_debug 可用于分析正在发生的事情:

SELECT alias, description, lexemes
FROM ts_debug('xyz/xyz-abc-testbed');

alias | description | lexemes
-------+-------------------+-----------------------
file | File or path name | {xyz/xyz-abc-testbed}
(1 row)

SELECT alias, description, lexemes
FROM ts_debug('xyz-abc-testbed');

alias | description | lexemes
-----------------+---------------------------------+-------------------
asciihword | Hyphenated word, all ASCII | {xyz-abc-testbed}
hword_asciipart | Hyphenated word part, all ASCII | {xyz}
blank | Space symbols |
hword_asciipart | Hyphenated word part, all ASCII | {abc}
blank | Space symbols |
hword_asciipart | Hyphenated word part, all ASCII | {testbed}
(6 rows)

PostgreSQL 将其中包含 / 的字符串解释为文件路径。它不会将文件路径分成几部分,就像它对带连字符的单词所做的那样。

关于Postgresql 全文匹配意外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52377185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com