2014-02-27 29 views
1

我想通過搜索lei4或gmail.com來獲取[email protected]郵件的postgres全文索引

ts_debug

第一個只有象徵:電子郵件。

我要的是像第二個

我們可以解析到電子郵件,asciiword和主機令牌的電子郵件?任何想法都會有幫助。

我已閱讀tsearch2指南,參考等無法找到解決方案。

+2

您可以使用[sqlfiddle](http://sqlfiddle.com)重現該問題嗎? –

+0

對不起,sqlfiddle似乎不支持像這樣的sql。這不是問題,我認爲postgres支持這一點,但我不知道該怎麼辦? – iamsk

回答

1

一個簡單的解決方案是將電子郵件地址轉換爲local-part at domain-part,然後將它們提供給TS解析器。

由於at是英文中的停用詞,因此將被忽略。

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

因此,無論lei4gmail.com要在此的tsvector被發現。

作爲一個附註,[email protected]是一個有效的電子郵件地址,TS解析器在將它分成四部分時是錯誤的。

+0

創建索引時使用的to_tsvector,它已經存儲在數據庫中,所以這種方式並不好。我希望有一個配置解析器時,杜松子酒索引。感謝您的回覆:) – iamsk

+0

@iamsk:即使它是一個解析器配置,它會在製作tsvectors時發揮作用,之後就太遲了。 –