2009-06-15 12 views
14

मैं एक एमएस एसक्यूएल सर्वर पूर्ण पाठ खोज क्वेरी कर रहा हूँ। मुझे विशेष पात्रों से बचने की ज़रूरत है ताकि मैं एक विशिष्ट शब्द पर खोज कर सकूं जिसमें विशेष वर्ण हों। क्या एक पूर्ण पाठ खोज स्ट्रिंग से बचने के लिए कोई अंतर्निहित फ़ंक्शन है? यदि नहीं, तो आप यह कैसे करेंगे?एसक्यूएल सर्वर पूर्ण पाठ खोज एस्केप अक्षर?

उत्तर

23

बुरी खबर: वहाँ कोई रास्ता नहीं है। अच्छी खबर: आपको इसकी आवश्यकता नहीं है (क्योंकि यह वैसे भी मदद नहीं करेगा)।

मैं अपनी परियोजनाओं में से एक पर समान मुद्दे का सामना करना पड़ा है। मैं समझता हूँ कि पूर्ण-पाठ सूचकांक का निर्माण करते हुए, एसक्यूएल सर्वर शब्द सीमांकक और इसलिए के रूप में सभी विशेष वर्ण व्यवहार करता है:

  1. इस तरह के एक चरित्र के साथ आपका शब्द दो (या अधिक) पूर्ण-पाठ सूचकांक में शब्दों के रूप में प्रतिनिधित्व किया है।
  2. ये चरित्र (रों) दूर हटा दिए जाते हैं और एक सूचकांक में नहीं दिखाई देते।

पर विचार करें हम इसके लिए एक इसी पूर्ण-पाठ सूचकांक (जो छोड़ दिया जाता है) के साथ निम्न तालिका है:

CREATE TABLE [dbo].[ActicleTable] 
(
    [Id] int identity(1,1) not null primary key, 
    [ActicleBody] varchar(max) not null 
); 

पर विचार करें बाद में हम तालिका में पंक्तियां जोड़ें:

INSERT INTO [ActicleTable] values ('digitally improvements folders') 
INSERT INTO [ActicleTable] values ('digital"ly improve{ments} fold(ers)') 

खोज करने का प्रयास करें:

SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'digitally') 
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'improvements') 
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'folders') 

और

SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'digital') 
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'improve') 
SELECT * FROM [ArticleTable] WHERE CONTAINS(*, 'fold') 

शर्तों का पहला समूह पहली पंक्ति (और दूसरा नहीं) से मेल खाता है जबकि दूसरा समूह केवल दूसरी पंक्ति से मेल खाता है।

दुर्भाग्य से मैं MSDN (या कुछ और) जहां इस तरह के व्यवहार को स्पष्ट रूप से कहा गया है के लिए एक लिंक नहीं मिल सका। लेकिन मैं एक official article बताता है कि कैसे पूर्ण-पाठ खोज प्रश्नों है, जो के लिए उद्धरण चिह्न परिवर्तित करने के लिए मिल गया है [परोक्ष] ऊपर वर्णित एल्गोरिथ्म के साथ गठबंधन किया।

संबंधित मुद्दे