यह लेख शुरुआती लोगों के लिए पूर्ण-पाठ खोज और इसके कार्यान्वयन के बारे में बात करता है।
इसके अतिरिक्त, पाठक पूर्ण-पाठ खोज को ठीक से काम करने के लिए महत्वपूर्ण बातों को जानेंगे।
यह लेख टेक्स्ट पैटर्न से मेल खाने और समान प्रकार की आवश्यकताओं को पूरा करने के लिए पूर्ण-पाठ खोज का उपयोग करने के महत्व पर भी प्रकाश डालता है।
पूर्ण-पाठ खोज के बारे में
आइए परिभाषाओं की सहायता से पूर्ण-पाठ खोज को समझते हैं।
सरल परिभाषा
त्वरित उत्तरों के लिए वर्ण-आधारित डेटा को बेहतर ढंग से खोजने के लिए पूर्ण-पाठ खोज का उपयोग किया जाता है।
माइक्रोसॉफ्ट परिभाषा
SQL सर्वर और Azure SQL डेटाबेस में पूर्ण-पाठ खोज (SQL डेटाबेस का क्लाउड संस्करण) उपयोगकर्ताओं और अनुप्रयोगों को SQL सर्वर तालिकाओं में वर्ण-आधारित डेटा के विरुद्ध पूर्ण-पाठ क्वेरी चलाने देता है।
पूर्ण-पाठ क्वेरी क्या है
एक पूर्ण-पाठ क्वेरी एक विशेष प्रकार की क्वेरी है जो डेटा के पैटर्न को खोजने के लिए टेक्स्ट डेटा वाले कॉलम के विरुद्ध लिखी और चलाई जाती है। इस मामले के लिए, उन स्तंभों के लिए पूर्ण-पाठ खोज सक्षम की जानी चाहिए।
संगतता
पूर्ण-पाठ खोज निम्न SQL सर्वर संस्करणों के साथ संगत है:
- SQL Server 2005 और ऊपर की ओर
- Azure SQL Database
पूर्ण-पाठ खोज आधुनिक संस्करण
हाल ही के SQL सर्वर संस्करणों में जैसे कि SQL 2016, पूर्ण-पाठ खोज सिमेंटिक खोज के साथ स्थापना के लिए उपलब्ध है।
पूर्ण-पाठ खोज - SQL सर्वर वैकल्पिक
कृपया याद रखें कि जब आप SQL सर्वर स्थापित करते हैं तो डिफ़ॉल्ट रूप से पूर्ण-पाठ खोज स्थापित नहीं होती है। आपको अपने SQL सर्वर को स्थापित करने के लिए मूल रूप से उपयोग किए गए सेटअप का उपयोग करके अपने वर्तमान SQL इंस्टेंस में अधिक सुविधाएँ जोड़कर इसे वैकल्पिक रूप से स्थापित करना होगा।
पूर्ण-पाठ खोज - डेटाबेस डिफ़ॉल्ट
सभी SQL डेटाबेस डिफ़ॉल्ट रूप से पूर्ण-पाठ खोज के साथ उपयोग के लिए तैयार हैं। SQL डेटाबेस में पूर्ण-पाठ खोज का उपयोग करने से पहले आवश्यकताओं को छोड़कर किसी और स्थापना की आवश्यकता नहीं है।
केस संवेदनशीलता
Microsoft दस्तावेज़ीकरण के अनुसार, पूर्ण-पाठ खोज केस संवेदी नहीं है इसलिए शब्द "कंट्रोल पैनल", "कंट्रोल पैनल" और "कंट्रोल पैनल" सभी को एक जैसा माना जाता है।
पूर्ण-पाठ खोज सेटअप करें
जैसा कि उल्लेख किया गया है, आपको उसी सेटअप फ़ाइल का उपयोग करके अपने मौजूदा SQL सर्वर स्थापना में एक सुविधा के रूप में पूर्ण-पाठ खोज जोड़ने की आवश्यकता है जिसका उपयोग आपने SQL सर्वर को स्थापित करने के लिए किया था।
SQL इंस्टालर चलाएँ
SQL सर्वर इंस्टॉलर चलाकर प्रारंभ करें। यदि आप इसे सहेजने के बजाय सीधे इंस्टॉलर से चलाना पसंद करते हैं तो यह आपको ड्राइव के रूप में माउंट करने का विकल्प देता है।
सेटअप फ़ाइल चलाएँ
SQL सर्वर सेटअप को चलाने के लिए Setup.exe फ़ाइल पर क्लिक करें:
सुविधा के रूप में जोड़ें
जैसे ही आप सेटअप फ़ाइल चलाते हैं, कुछ प्रारंभिक जाँच की जाएगी। एक बार ये चेक पास हो जाने के बाद, आपको “मौजूदा इंस्टॉलेशन विकल्प में सुविधाएं जोड़ें” select का चयन करना होगा स्थापना नेविगेशन बार (अनुभाग) के अंतर्गत:
अपना वर्तमान सर्वर चुनें
इसके बाद, अपना वर्तमान/संभावित सर्वर चुनें जिसके लिए आप पूर्ण-पाठ खोज स्थापित करने जा रहे हैं। हमारे मामले में, यह SQL 2016 है:
जोड़ने के लिए इंस्टेंस फ़ीचर चुनें
इसके बाद, खोज के लिए पूर्ण-पाठ और सिमेंटिक एक्सट्रैक्शन चुनें जोड़ी जाने वाली सुविधा (यदि आप पुराने SQL संस्करणों के लिए इस सुविधा को जोड़ते हैं, तो अर्थ संबंधी निष्कर्ष नहीं दिखाए जा सकते हैं):
कृपया ध्यान दें, चूंकि मैंने इस सुविधा को पूर्वाभ्यास से पहले ही जोड़ दिया है, यह स्क्रीनशॉट पर धूसर दिखाई देता है। लेकिन जो कोई भी इसे पहली बार जोड़ रहा है, वह सक्रिय होगा और इसे स्थापित किया जा सकता है जिसमें थोड़ा समय लगता है।
पूर्ण-पाठ खोज स्थापना स्थिति जांचें
एक बार पूर्ण-पाठ खोज स्थापित हो जाने पर, आप मास्टर डेटाबेस के विरुद्ध निम्न T-SQL स्क्रिप्ट चलाकर इसकी जांच कर सकते हैं:
-- Is Full-Text Search installed then 1 or 0 SELECT fulltextserviceproperty('IsFulltextInstalled') as [Full-Text Search]
एक बार जब आप पूर्ण-पाठ खोज को सफलतापूर्वक स्थापित कर लेते हैं, तो आप "1" देखेंगे जिसका अर्थ है कि स्क्रिप्ट चल रही है:
पूर्ण-पाठ खोज का उपयोग करके शब्दों और वाक्यांशों को खोजना
अब, हम पूर्ण-पाठ खोज का उपयोग करके शब्दों और वाक्यांशों के लिए कुछ बुनियादी खोज संचालन करेंगे।
नमूना डेटाबेस सेटअप करें
पूर्ण-पाठ खोज के मूल उपयोग को समझने के लिए, आइए एक नमूना डेटाबेस सेट करें जिसे SQLDevBlogV6 कहा जाता है इस प्रकार:
-- Create sample database (SQLDevBlogV6) CREATE DATABASE SQLDevBlogV6; GO USE SQLDevBlogV6; -- (1) Create Article table in the sample database CREATE TABLE [dbo].[Article] ( [ArticleId] INT IDENTITY (1, 1) NOT NULL, [Category] VARCHAR (50) NULL, [Author] VARCHAR (50) NULL, [Title] VARCHAR (150) NULL, [Published] DATETIME2 (7) NULL, [Notes] VARCHAR (400) NULL, CONSTRAINT [PK_Article] PRIMARY KEY (ArticleId) ); GO -- (2) Populate the table with data SET IDENTITY_INSERT [dbo].[Article] ON INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (1, N'Development', N'Atif', N'Introduction to T-SQL Programming ', N'2017-01-01 00:00:00', NULL) INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (2, N'Testing', N'Peter', N'Database Unit Testing Fundamentals', N'2017-01-10 00:00:00', NULL) INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (3, N'DLM', N'Sadaf', N'Database Lifecycle Management for beginners', N'2017-01-20 00:00:00', NULL) INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (4, N'Development', N'Peter', N'Common Table Expressions (CTE)', N'2017-02-10 00:00:00', NULL) INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (5, N'Testing', N'Sadaf', N'Manual Testing vs. Automated Testing', N'2017-03-20 00:00:00', NULL) INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (6, N'Testing', N'Atif', N'Beyond Database Unit Testing', N'2017-11-10 00:00:00', NULL) INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (7, N'Testing', N'Sadaf', N'Cross Database Unit Testing', N'2017-12-20 00:00:00', NULL) INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (8, N'Development', N'Peter', N'SQLCMD - A Handy Utility for Developers', N'2018-01-10 00:00:00', NULL) INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (9, N'Testing', N'Sadaf', N'Scripting and Testing Database for beginners ', N'2018-02-15 00:00:00', NULL) INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (10, N'Development', N'Atif', N'Advanced Database Development Methods', N'2018-07-10 00:00:00', NULL) INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (11, N'Testing', N'Sadaf', N'How to Write Unit Tests for your Database', N'2018-11-10 00:00:00', NULL) INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (12, N'Development', N'Peter', N'Database Development using Modern Tools', N'2018-12-10 00:00:00', NULL) INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (13, N'DLM', N'Atif', N'Designing, Developing and Deploying Database', N'2019-01-01 00:00:00', NULL) INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (14, N'DLM', N'Peter', N'How to Apply Database Lifecycle Management', N'2019-02-10 00:00:00', NULL) INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (15, N'Testing', N'Saqib', N'SQL Unit Testing Stored Procedures', N'2019-03-10 00:00:00', NULL) SET IDENTITY_INSERT [dbo].[Article] OFF
वाक्यांश और शब्द
आइए पूर्ण-पाठ खोज के संदर्भ में अधिक वाक्यांश और शब्द देखें। इससे आपको पूर्ण-पाठ खोज के माध्यम से इस बात का बेहतर अंदाजा हो जाएगा कि आप क्या खोज रहे हैं।
कथन “T-SQL का परिचय ” एक मुहावरा है और “परिचय ” और “टी-एसक्यूएल " रुचि के शब्द हैं।
एसक्यूएल सर्वर में पूर्ण-पाठ खोज को लागू करने के चरण
एक पूर्ण-पाठ खोज निम्नलिखित तरीकों से कार्यान्वित की जाती है:
- एक पूर्ण-पाठ कैटलॉग बनाएं (पूर्ण-पाठ अनुक्रमणिका संग्रहीत करने के लिए)।
- टेबल या इंडेक्स व्यू पर फुल-टेक्स्ट इंडेक्स को परिभाषित करें।
- शब्दों और वाक्यांशों को खोजने के लिए CONTAINS या FREETEXT का उपयोग करके पूर्ण-पाठ खोज क्वेरी चलाएँ।
एक पूर्ण-पाठ कैटलॉग बनाएं
तो, नमूना डेटाबेस (SQLDevBlogV6) बनाया गया है और सफलतापूर्वक पॉप्युलेट किया गया है। पूर्ण-पाठ कैटलॉग बनाना पूर्ण-पाठ खोज को लागू करने का पहला चरण है।
ऑब्जेक्ट एक्सप्लोरर पर जाएं SQL सर्वर में, डेटाबेस expand का विस्तार करें नोड, और फिर SQLDevBlogV6 पर क्लिक करें।
संग्रहण Click क्लिक करें , फिर पूर्ण-पाठ कैटलॉग क्लिक करें, और फिर नई पूर्ण-पाठ कैटलॉग क्लिक करें:
कैटलॉग का नाम DevBlogCatalog, . के रूप में दर्ज करें क्लिक करें ठीक:
नव निर्मित पूर्ण-पाठ कैटलॉग इस प्रकार दिखता है:
तालिका पर पूर्ण-पाठ अनुक्रमणिका परिभाषित करें
लेख . पर राइट क्लिक करें तालिका, क्लिक करें पूर्ण-पाठ अनुक्रमणिका, और फिर पूर्ण-पाठ अनुक्रमणिका परिभाषित करें . क्लिक करें जैसा कि नीचे दिखाया गया है:
यह फुल-टेक्स्ट इंडेक्सिंग विजार्ड को ट्रिगर करेगा। अगलाक्लिक करें , फिर अगला . क्लिक करें फिर से यह सुनिश्चित करने के बाद कि तालिका प्राथमिक कुंजी विज़ार्ड द्वारा पूर्व-चयनित है।
अगले चरण में, शीर्षक चुनें पूर्ण-पाठ प्रश्नों के लिए कॉलम। यह वह कॉलम है जिसके सामने हम अपने पूर्ण-पाठ प्रश्नों को चलाने जा रहे हैं:
इसके बाद, स्वचालित रूप से . का चयन करके परिवर्तन ट्रैकिंग को स्वचालित करने के लिए डिफ़ॉल्ट विकल्प चुनें विकल्प (जब तक आप किसी अन्य विकल्प का चयन करने में रुचि नहीं रखते) जैसा कि नीचे दिखाया गया है:
अगले चरण में, कृपया पूर्ण-पाठ सूची (DevBlogCatalog) चुनें, जिसे आपने इस पूर्वाभ्यास में पहले परिभाषित पूर्ण-पाठ अनुक्रमणिका के साथ जोड़ा है। फिर नीचे दिखाए अनुसार डिफ़ॉल्ट विकल्प चुनने के बाद अगला क्लिक करें:
अगला क्लिक करें और वैकल्पिक चरण छोड़ें, फिर समाप्त करें . क्लिक करें यह देखने के लिए कि पूर्ण-पाठ अनुक्रमणिका सफलतापूर्वक बनाई गई है।
अब हम शीर्षक . के विरुद्ध पूर्ण-पाठ क्वेरी चला सकते हैं तालिका का स्तंभ अनुच्छेद पूर्ण-पाठ खोज सक्षम करने के लिए धन्यवाद।
पूर्ण-पाठ क्वेरी का उपयोग करके शब्द परीक्षण खोजें
अब हम CONTAINS . का उपयोग करके शब्दों को शीघ्रता से खोज सकते हैं निम्नलिखित टी-एसक्यूएल स्क्रिप्ट लिखकर कीवर्ड (विधेय) करें:
-- Search for the Word Testing using Full-Text Query SELECT * FROM dbo.Article WHERE CONTAINS(Title,'Testing')
परीक्षण . को खोजने के लिए परिणाम शीर्षक . में शब्द कॉलम इस प्रकार हैं:
कृपया ध्यान दें कि आप पूर्ण-पाठ खोज के बिना लाइक ऑपरेटर का उपयोग करके समान परिणाम प्राप्त कर सकते हैं। अंतर तब होता है जब आप इस क्वेरी को लाखों और लाखों पंक्तियों के विरुद्ध चला रहे होते हैं और यह तब होता है जब LIKE ऑपरेटर संघर्ष करता है। इस बीच, विशेषज्ञों के अनुसार CONTAINS कहीं अधिक तेज है।
पूर्ण-पाठ क्वेरी का उपयोग करके शुरुआती लोगों के लिए वाक्यांश खोजें
आइए उन सभी लेखों को खोजें जहां वाक्यांश “शुरुआती के लिए” शीर्षक में प्रयोग किया जाता है। इससे शुरुआती लोगों को जल्दी शुरुआत करने में मदद मिलेगी।
इस बार हम FREETEXT . का उपयोग कर रहे हैं कीवर्ड (विधेय)। यह निम्नलिखित टी-एसक्यूएल स्क्रिप्ट का उपयोग करके शुरुआती लोगों के लिए हमें सभी लेख प्राप्त करेगा:
-- Search for Phrase: for beginners using Full-Text Query SELECT * FROM dbo.Article WHERE FREETEXT(Title,'for beginners')
आउटपुट इस प्रकार है:
बधाई हो, आपने पूर्ण-पाठ खोज की मूल बातें सफलतापूर्वक सीख ली हैं। आपको शब्दों और वाक्यांशों के लिए पूर्ण-पाठ खोज क्वेरी सेट करने और चलाने का व्यावहारिक अनुभव भी मिला है।
संपर्क में रहें क्योंकि आगामी लेख उन्नत पूर्ण-पाठ खोज उपयोग का वर्णन करता है। यह अक्सर डेटाबेस विश्लेषण परिदृश्यों में उपयोगी होता है।
करने के लिए चीज़ें
अब जब आप पूर्ण-पाठ खोज को सेटअप कर सकते हैं और पूर्ण-पाठ प्रश्नों को चला सकते हैं, तो कृपया अपने कौशल में सुधार करने के लिए निम्नलिखित चीजों का प्रयास करें:
- डेटाबेस को पॉप्युलेट करने का प्रयास करें नोट्स लेखों के बारे में अधिक जानकारी प्रदान करके कॉलम। इसके बाद CONTAINS और FREETEXT कीवर्ड का उपयोग करके शब्दों और वाक्यांशों की खोज करने के लिए पूर्ण-पाठ कैटलॉग को परिभाषित करना और पूर्ण-पाठ प्रश्नों को चलाना चाहिए।
- इसके अलावा, शब्द इकाई की खोज करें उन सभी लेखों का पता लगाने के लिए जहां इस शब्द का उल्लेख किया गया है। इसे कॉलम में यूनिट टेस्टिंग, यूनिट टेस्ट या यूनिट टेस्ट के रूप में स्टोर किया जा सकता है।
- इस आलेख में नमूना डेटाबेस देखें। उत्पाद, . तालिका के लिए पूर्ण-पाठ खोज सेटअप करें कॉलम नाम, . पर पूर्ण-पाठ अनुक्रमणिका को परिभाषित करें और जितना हो सके उतने रिकॉर्ड जोड़ें। अपने वांछित उत्पादों (नाम) को खोजने के लिए अपनी पसंद के शब्दों और वाक्यांशों को खोजें।