postgres全文索引电子邮件

时间:2014-02-27 14:42:35

标签: sql postgresql

我想通过搜索lei4或gmail.com来获取lei4@gmail.com。

ts_debug

第一个只有令牌:电子邮件。

我想要的就像第二个

我们可以将电子邮件解析为电子邮件,asciiword和主机令牌吗?任何想法都会有所帮助。

我已经阅读过tsearch2指南,参考等等找不到解决方案。

1 个答案:

答案 0 :(得分:2)

一个简单的解决方案是将电子邮件地址转换为local-part at domain-part,然后再将它们提供给TS解析器。

由于at是英语中的停用词,因此会被忽略。

=> select to_tsvector('english','lei4 at gmail.com');
      to_tsvector       
------------------------
 'gmail.com':3 'lei4':1

因此,将在此tsvector中找到lei4gmail.com

作为旁注,lei+4@gmail.com是一个有效的电子邮件地址,TS解析器将其标记为四个部分是错误的。