2012-12-31 7 views
11

में विशेष वर्णों से बचने के लिए to_tsquery पर पारित स्ट्रिंग में विशेष वर्णों को आप कैसे स्थानांतरित करते हैं? उदाहरण के लिए, क्वेरी इस तरह की:to_tsquery

select to_tsquery('AT&T'); 

का उत्पादन:

NOTICE: text-search query contains only stop words or doesn't contain lexemes, ignored 

to_tsquery 
------------ 

(1 row) 

संपादित करें: मैंने यह भी देखा to_tsvector में एक ही मुद्दा नहीं है।

उत्तर

3

यदि आप खोज शब्द के रूप में इलाज किया जाना है '& टी एटी' चाहते हैं, आप, कुछ अनुकूलित घटकों की आवश्यकता के लिए जा रहे क्योंकि डिफ़ॉल्ट पार्सर दो शब्दों के रूप में यह विभाजन:

[email protected]@[local] =# select * from ts_parse('default', 'AT&T'); 
tokid | token 
-------+------- 
    1 | AT 
    12 | & 
    1 | T 
(3 rows) 
[email protected]@[local] =# select * from ts_debug('simple', 'AT&T'); 
    alias | description | token | dictionaries | dictionary | lexemes 
-----------+-----------------+-------+--------------+------------+--------- 
asciiword | Word, all ASCII | AT | {simple}  | simple  | {at} 
blank  | Space symbols | &  | {}   |   | 
asciiword | Word, all ASCII | T  | {simple}  | simple  | {t} 
(3 rows) 

आप कर सकते हैं के रूप में the documentation for CREATE TEXT PARSER से देखें यह बहुत छोटा नहीं है, क्योंकि पार्सर को सी फ़ंक्शन होने की आवश्यकता होती है।

आप हो रही "underscore_word" किसी की इस पोस्ट मिल सकती है एक भी टोकन उपयोगी के रूप में मान्यता प्राप्त होना:

select $$'AT&T'$$::tsquery; 

आप कर सकते हैं: http://postgresql.1045698.n5.nabble.com/Configuring-Text-Search-parser-td2846645.html

0

एक सरल समाधान के रूप में इस tsquery बनाने के लिए है अधिक जटिल प्रश्न:

select $$'AT&T' & Phone | '|Bang!'$$::tsquery; 

अधिक जानकारी के लिए टेक्स्ट खोज docs देखें।

0

मैं plainto_tsquery('AT&T) समारोह https://stackoverflow.com/a/16020565/350195

+1

जैसे आंशिक मेल का समर्थन करने के लिए वैसे भी वहाँ है का उपयोग करता है इस टिप्पणी बहुत उपयोगी पाया जोड़ना: * इसके साथ अंत में? –