मैं pg_search का लेखक और अनुरक्षक हूँ।
दुर्भाग्य से, PostgreSQL का tsearch डिफ़ॉल्ट रूप से ईमेल पते को विभाजित नहीं करता है और आपको भागों के साथ मिलान करने की अनुमति देता है। यदि आप :trigram . को चालू करते हैं तो यह काम कर सकता है खोज, हालांकि, चूंकि यह मनमाना उप-स्ट्रिंग से मेल खाता है जो खोजने योग्य पाठ में कहीं भी दिखाई देते हैं।
pg_search_scope :search_by_detail,
:against => [
[:first_name,'A'],
[:last_name,'B'],
[:email,'C']
],
:using => {
:tsearch => {:prefix => true},
:trigram => {}
}
मैंने psql में निम्न कमांड चलाकर इसकी पुष्टि की:
grant=# SELECT plainto_tsquery('example.com') @@ to_tsvector('english', 'example@sqldat.com');
?column?
----------
f
(1 row)
मुझे पता है कि पार्सर ईमेल पते का पता लगाता है, इसलिए मुझे लगता है कि यह संभव होना चाहिए। लेकिन इसमें एक टेक्स्ट सर्च डिक्शनरी बनाना शामिल होगा। PostgreSQL में जो ईमेल पते को टोकन में ठीक से विभाजित करेगा।
यहां इस बात का प्रमाण दिया गया है कि टेक्स्ट सर्च पार्सर जानता है कि यह एक ईमेल पता है:
grant=# SELECT ts_debug('english', 'example@sqldat.com');
ts_debug
-----------------------------------------------------------------------------
(email,"Email address",example@sqldat.com,{simple},simple,{example@sqldat.com})
(1 row)