बुरी खबर:कोई रास्ता नहीं है। अच्छी खबर:आपको इसकी आवश्यकता नहीं है (क्योंकि यह वैसे भी मदद नहीं करेगा)।
मुझे अपनी परियोजनाओं में से एक पर इसी तरह की समस्या का सामना करना पड़ा है। मेरी समझ यह है कि पूर्ण-पाठ अनुक्रमणिका बनाते समय, SQL सर्वर सभी विशेष वर्णों को शब्द सीमांकक के रूप में मानता है और इसलिए:
- इस तरह के चरित्र वाला आपका शब्द पूर्ण-पाठ अनुक्रमणिका में दो (या अधिक) शब्दों के रूप में दर्शाया गया है।
- ये वर्ण हटा दिए गए हैं और किसी अनुक्रमणिका में प्रकट नहीं होते हैं।
विचार करें कि हमारे पास इसके लिए संबंधित पूर्ण-पाठ अनुक्रमणिका के साथ निम्न तालिका है (जिसे छोड़ दिया गया है):
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')
शर्तों का पहला समूह पहली पंक्ति से मेल खाएगा (दूसरा नहीं) जबकि दूसरा समूह केवल दूसरी पंक्ति से मेल खाएगा।
दुर्भाग्य से मुझे एमएसडीएन (या कुछ) का लिंक नहीं मिला जहां ऐसा व्यवहार स्पष्ट रूप से कहा गया हो। लेकिन मुझे एक आधिकारिक लेख मिला है जो बताता है कि पूर्ण-पाठ खोज क्वेरी के लिए उद्धरण चिह्नों को कैसे परिवर्तित किया जाए, जो [निहित रूप से] ऊपर वर्णित एल्गोरिथम के साथ संरेखित है।