to_tsquery 用于 postgresql 格式化

to_tsquery 用于 postgresql 格式化

我搜索过postgreSQL 文档(v9.6)关于 to_tsquery() 的使用,以及许多其他来源(通过 Google 搜索引擎)。我发现提示其他人也遇到过类似的问题,但我可能需要帮助,也许只是了解 to_tsquery postgreSQL 语法的基本性质。

如果我查询

SELECT * from table
WHERE table.email @@ to_tsquery('[email protected]');

email然后我得到该列包含'的所有行[电子邮件保护]“”。

但如果我查询

SELECT * from table
WHERE table.email @@ to_tsquery('user:* & domain:* & ext:*');

那么我就没有行。

有人能就我在第二种情况下可能滥用的情况提供任何指导吗to_tsquery?我的意图是从电子邮件地址中删除@和,并在、和与电子邮件匹配的.情况下进行匹配。usrdomainext

谢谢您的指导!

--J

答案1

正如 PostgreSQL 提交者在讨论您链接到:

tsvector 用于搜索自然语言单词。想象它的工作方式与子字符串匹配完全一样并不是一个好主意,尤其是对于非简单单词的字符串。

文本搜索解析器[email protected]在较大的文本中将其识别为类型的标记email。它不提供任何提取顶级域或子域或本地地址部分的功能。

此外,不清楚您的用例是什么。将语言环境部分与前缀进行匹配可能有意义,但将顶级域与前缀进行匹配?作为 TLD与或 的.co关系并不大,因此不会像匹配模式那样取得多大成就。.com.org.infoext:*

此外,子域名本质上是分层的。ibm可以在中找到something.ibm.com,但它不匹配ibm:*,因此这种匹配似乎也没有什么用。

相关内容