Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

उन्नत उपयोगकर्ताओं के लिए SQL सर्वर 2016 में पूर्ण-पाठ खोज लागू करना

यह आलेख डेटा पेशेवरों के लिए पूर्ण-पाठ खोज उपयोग के उन्नत तरीकों के बारे में बताता है। यह उनके दैनिक डेटाबेस विश्लेषण में बेहतर खोज अनुभव को सक्षम बनाता है।

इसके अतिरिक्त, पाठक पूर्ण-पाठ खोज और इसके कार्यान्वयन के बुनियादी ज्ञान से परे हो जाएंगे। आप त्वरित और विश्वसनीय परिणाम प्राप्त करने के लिए पूर्ण-पाठ खोज का उपयोग करके उन्नत खोज पद्धति का महत्व देखेंगे।

आवश्यकताएं

सबसे पहले, आइए पूर्वापेक्षाओं पर ध्यान दें क्योंकि लेख पूर्ण-पाठ खोज के उन्नत उपयोगों पर केंद्रित है।

टी-एसक्यूएल की जानकारी

लेख मानता है कि वॉक-थ्रू को लागू करने के लिए, पाठक SQL सर्वर की बुनियादी समझ के साथ डेटाबेस के विरुद्ध T-SQL स्क्रिप्ट लिखने और चलाने से परिचित हैं।

पूर्ण-पाठ खोज की मूल बातें

यह लेख भी पाठकों से पूर्ण-पाठ खोज की बुनियादी समझ की अपेक्षा करता है।

कृपया, शुरुआती के लिए SQL सर्वर 2016 में पूर्ण-पाठ खोज लागू करना का संदर्भ लें लेख यदि आप बुनियादी अवधारणाओं और वॉक-थ्रू के माध्यम से पूर्ण-पाठ खोज के कार्यान्वयन से परिचित होना चाहते हैं।

पूर्ण-पाठ खोज स्थापना

मान लें कि आपके SQL इंस्टेंस में पूर्ण-पाठ खोज पहले ही जोड़ दी गई है।

यदि आपने इसे अभी तक नहीं किया है, तो शुरुआती के लिए SQL सर्वर 2016 में पूर्ण-पाठ खोज लागू करना में दिए गए निर्देशों का पालन करें। आपके SQL इंस्टेंस में पूर्ण-पाठ खोज स्थापित करने में आपकी सहायता करने के लिए लेख।

आप निम्न स्क्रिप्ट निष्पादित करके पूर्ण-पाठ खोज की स्थिति की जांच कर सकते हैं:

-- Is Full-Text Search installed then 1 or 0
SELECT fulltextserviceproperty('IsFulltextInstalled') as [Full-Text Search]

नमूना डेटाबेस SQLDevBlogV7

अब SQLDevBlogV7 called नामक एक नमूना डेटाबेस बनाएं और पॉप्युलेट करें नोट्स having होना VARCHAR(MAX) . का कॉलम प्रकार। ऐसा करने के लिए, मास्टर डेटाबेस के विरुद्ध निम्न T-SQL स्क्रिप्ट चलाएँ:

-- Create sample database (SQLDevBlogV7)
CREATE DATABASE SQLDevBlogV7;
GO


USE SQLDevBlogV7;


-- (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 (MAX) NULL,
CONSTRAINT [PK_Article] PRIMARY KEY (ArticleId)

);

GO

-- Reset tabular data
TRUNCATE TABLE dbo.Article
GO

-- Add data to the table
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', N'The article is about T-SQL programming covering most commonly used statements including SELECT.')

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', N'This is a database unit testing article to get familiar with unit testing with the help of examples and walkthroughs.')

INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (3, N'Data Analysis', N'Haroon', N'Learn Basic Data Analysis with SQL Window Functions', N'2019-06-12 00:00:00', N'This article is about T-SQL (Transact-SQL) Window functions and their basic use in day-to-day data analysis tasks.')

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', N'This is an article which explains how to use CTE in T-SQL to write complex queries.')

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', N'This article is based on the comparative anlaysis between manual testing and automated testing. This article uses tSQLt to give examples of automated testing.')

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', N'There is a lot to do when it comes to the database unit testing and this article is more about the some advanced level methods to write and run SQL unit tests using tSQLt.')

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', N'This article covers a complex scenario of cross database unit testing using 3rd party testing tools.')

INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (8, N'Development', N'Haroon', N'How to Properly Use the T-SQL IsNumeric Function', N'2018-01-10 00:00:00', N'This is about IsNumeric function which determines whether an expression can be evaluated as a number. Here, the expression can consist of symbols and operators which are evaluated as a single data value by SQL Server Database Engine.')

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', N'This article is based on the scripting and testing of SQL databases using modern tools and technologies.')

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', N'This article talks about modern database development tools including SSDT, SSMS etc.')

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', N'This article is about writing unit testing for your database using MSTest.')

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', N'In this aritlce a database development scenario is dicussed using SQL Server Data Tools and SQL Server Management Studio. ')

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', N'The concepts around Azure DevOps and their implementation is the main focus of this article.')

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', N'This article is about DLM.')

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', N'This article talks about how to write unit tests for a procedure.')

INSERT INTO [dbo].[Article] ([ArticleId], [Category], [Author], [Title], [Published], [Notes]) VALUES (16, N'Reporting', N'Haroon', N'SSRS Reports Development in Simple Terms', N'2019-07-10 22:26:42', N'The article is dedicated to the fundamentals of SQL Server Reporting Services (SSRS) development and aimed at beginners and professionals interested in database development.')

SET IDENTITY_INSERT [dbo].[Article] OFF

पूर्ण-पाठ कैटलॉग बनाएं

नीचे दी गई स्क्रिप्ट का उपयोग करके या सेटअप विज़ार्ड का उपयोग करके पूर्ण-पाठ कैटलॉग बनाएं:

-- Create Full-Text Catalog
CREATE FULLTEXT CATALOG ArticleCatalog AS DEFAULT;
GO

नोट्स पर पूर्ण-पाठ अनुक्रमणिका परिभाषित करें

एक बार कैटलॉग सफलतापूर्वक बन जाने के बाद, नोट्स . के आधार पर एक पूर्ण-पाठ अनुक्रमणिका परिभाषित करें कॉलम इस प्रकार है (या सेटअप विज़ार्ड का उपयोग करके):

-- Define Full-Text Index
CREATE FULLTEXT INDEX ON dbo.Article(Notes)
KEY INDEX PK_Article
WITH STOPLIST = SYSTEM;
GO

पूर्ण-पाठ कैटलॉग और पूर्ण-पाठ अनुक्रमणिका जाँच

आपके द्वारा अभी बनाया गया पूर्ण-पाठ अनुक्रमणिका और पूर्ण-पाठ कैटलॉग देखने के लिए संबंधित नोड्स का विस्तार करें:

अब आप रुचि की तालिका के विरुद्ध पूर्ण-पाठ प्रश्नों को चलाने के लिए तैयार हैं - हमारे मामले में, यह अनुच्छेद है ।

साधारण शब्द

किसी शब्द या वाक्यांश को खोजना अन्य रूपों को खोजने की तुलना में आसान है, इसलिए इसे एक साधारण शब्द के रूप में भी जाना जाता है।

शुरुआती के लिए SQL सर्वर 2016 में पूर्ण-पाठ खोज लागू करना का संदर्भ लें किसी शब्द या वाक्यांश की खोज के लिए एक पूर्ण-पाठ क्वेरी के मूल रूप को लागू करने के लिए लेख।

आइए अब पूर्ण-पाठ खोज का उपयोग करके की गई कुछ संभावित उन्नत खोजों पर चर्चा करें।

उपसर्ग शब्द का उपयोग करके उन्नत पूर्ण-पाठ खोज

एक उपसर्ग शब्द कुछ अक्षरों से शुरू होने वाले उपसर्ग शब्द को संदर्भित करता है - यह तब कुछ भी हो सकता है जो उस पैटर्न से मेल खाता हो। आप इसे LIKE . के पूर्ण-पाठ खोज संस्करण के रूप में सोच सकते हैं उपसर्ग* के साथ।

एक वाक्यांश के भीतर एक शब्द या शब्दों में उपसर्ग शब्द भी हो सकते हैं।

उदाहरण

उदाहरण के लिए, डेटा* . शब्द की खोज करना हमें उस कॉलम में डेटा से शुरू होने वाली कुछ भी प्राप्त कर सकते हैं जैसे डेटा, डेटाबेस, डेटाबेस इत्यादि।

उपसर्ग शब्द का उपयोग करके देव-संबंधित लेख खोजें

आइए कल्पना करें, बेहतर वेबसाइट देखने के अनुभव के लिए आपको विकास से संबंधित लेखों को एक अलग विकास समूह में व्यवस्थित करने के लिए खोजने का काम सौंपा गया है।

समाधान 'उपसर्ग शब्द खोज' एक पूर्ण-पाठ क्वेरी का उपयोग इस प्रकार है:

--Implementing Prefix Term Full-Text Seach to find dev related articles
SELECT Title,Notes FROM dbo.Article WHERE CONTAINS(NOTES,'"dev*"')

परिणामों ने DevOps . के बारे में लेख भी दिखाया - यह देव-संबंधी नहीं है, इसलिए हम दूसरी स्क्रिप्ट चलाते हैं। यह देवओप्स को छोड़कर, एक पूर्ण-पाठ क्वेरी का उपयोग करके सभी देव-संबंधित लेखों को शीघ्रता से ढूंढेगा:

--Implementing Prefix Term Full-Text Seach to find dev related articles but not DevOps
SELECT Title,Notes FROM dbo.Article WHERE CONTAINS(NOTES,'"dev*"') AND NOT CONTAINS(Notes,'DevOps')

आउटपुट इस प्रकार है:

यह भी ध्यान दें, खोज शब्द को दोहरे उद्धरणों में रखना आवश्यक है जैसा कि ऊपर की लिपियों में दिखाया गया है। ऐसा करके, हम उपसर्ग शब्द खोज को ठीक से लागू करते हैं।

विभक्ति प्रपत्र का उपयोग कर उन्नत पूर्ण-पाठ खोज

कभी-कभी आपको किसी शब्द के विभक्ति रूपों की खोज करने की आवश्यकता होती है जिसका अर्थ है कि एक शब्द संभावित रूप ले सकता है।

उदाहरण

एक सरल उदाहरण "तैनाती" शब्द है जिसके निम्नलिखित विभक्ति रूप हो सकते हैं:

  1. तैनाती
  2. तैनात
  3. परिनियोजन
  4. डिप्लॉयमेंट
  5. तैनाती करना

लिखने की खोज के विभक्ति रूप

आइए देखें कि क्या होता है यदि हम लिखें: शब्द के सभी विभक्ति रूपों के लिए नोट्स खोजने के लिए एक पूर्ण-पाठ क्वेरी चलाते हैं

-- Searching inflectional forms of word write using Full-Text Search

SELECT Title,Notes FROM dbo.Article WHERE CONTAINS(NOTES,'FORMSOF(INFLECTIONAL,write)')

दोनों पंक्तियों वाला नोट्स कॉलम लिखें और लिखना जहां लिखना . दिखाया जाता है लिखने . का एक विभक्ति रूप है ।

प्रौद्योगिकी खोज के विभक्ति रूप

यदि आपको तकनीकी शब्द के विभिन्न रूपों वाले सभी लेखों को खोजने का काम सौंपा गया है, तो निम्नलिखित टी-एसक्यूएल स्क्रिप्ट का उपयोग करके शब्द खोज का एक विभक्ति रूप लागू करें:

-- Searching inflectional forms of word technology using Full-Text Search
SELECT Title,Notes FROM dbo.Article WHERE CONTAINS(NOTES,'FORMSOF(INFLECTIONAL,technology)')

आउटपुट इस प्रकार है:

कोई उपसर्ग शब्द इकाई खोज नहीं

आइए अब एक अधिक जटिल पूर्ण-पाठ क्वेरी बनाते हैं। यह परीक्षण . शब्द का एक विभक्ति रूप खोजने के लिए सभी लेखों की खोज करेगा लेकिन उपसर्ग शब्द के बिना इकाई (इकाई परीक्षण को छोड़कर) क्योंकि हम परीक्षण के बारे में लेखों की तलाश कर रहे हैं, न कि इकाई परीक्षण के बारे में:

-- Searching inflectional forms of word test excluding unit prefix term using Full-Text Search
SELECT Title,Notes FROM dbo.Article WHERE CONTAINS(NOTES,'FORMSOF(INFLECTIONAL,test)') AND NOT CONTAINS(NOTES,'"unit*"')

परिणामस्वरूप, हम केवल वही रिकॉर्ड देखने जा रहे हैं जहां मैनुअल , स्वचालित, या सिर्फ परीक्षण इकाई परीक्षण . को छोड़कर शब्दों का उल्लेख किया गया है लेख।

निकटता खोज का उपयोग करके उन्नत पूर्ण-पाठ खोज

आइए एक पूर्ण-पाठ क्वेरी चलाकर निकटता खोज का उपयोग करने के अपने व्यावहारिक अनुभव का उपयोग करें।

निकटता खोज/अवधि

पूर्ण-पाठ खोज का यह रूप आपको उन शब्दों या वाक्यांशों को खोजने की अनुमति देता है जो एक दूसरे के करीब हैं। जब कुछ शब्द या वाक्यांश बहुत तंग होते हैं तो रिकॉर्ड ढूंढना बहुत आसान होता है।

उदाहरण

एक निकटता खोज का एक अच्छा उदाहरण रिकॉर्ड की खोज करना है जहां शब्द फुटबॉल . है जमीन . शब्द के पास है केवल फ़ुटबॉल मैदान के बारे में जानकारी प्राप्त करने के लिए।

निकटता शब्द का उपयोग करके 'उन्नत निकट परीक्षण' खोजें

यदि आप उन सभी लेखों की खोज करना चाहते हैं जहां किसी विशेष आदेश का पालन किए बिना उन्नत परीक्षण का उल्लेख किया गया है, तो आपका सबसे अच्छा विकल्प निकटता खोज का उपयोग करना है, यह देखते हुए कि पूर्ण-पाठ खोज वांछित कॉलम के विरुद्ध स्थापित है।

उन्नत . शब्द खोजने के लिए निम्नलिखित स्क्रिप्ट लिखें शब्द के पास परीक्षण नोट्स कॉलम में किसी भी क्रम में:

-- Search for word advanced near word testing using proximity search (Full-Text Search)
SELECT NOTES FROM dbo.Article WHERE CONTAINS (NOTES,'NEAR(advanced,testing)')

परिणाम इस प्रकार हैं:

परिणामों ने हमें वे नोट दिखाए जहां उन्नत स्तर के तरीकों द्वारा परीक्षण का उल्लेख किया गया है और यही वह है जिसे हम ढूंढ रहे थे। हम दो शब्दों के बीच की दूरी भी निर्दिष्ट कर सकते हैं।

अधिक से अधिक 2 शब्दों के साथ खोज करना

अंत में, प्रत्येक डेटाबेस परिदृश्य का पता लगाने के लिए निकटता शब्द का उपयोग करके एक पूर्ण-पाठ क्वेरी चलाएँ जहाँ डेटाबेस शब्द है परिदृश्य . शब्द के निकट है लेकिन दो शब्दों से अधिक नहीं।

-- Search for word database near word scenario not more than 2 words apart using proximity search (Full-Text Search)
SELECT NOTES FROM dbo.Article WHERE CONTAINS (NOTES,'NEAR((database,scenario),2,TRUE)')

आउटपुट इस प्रकार है:

परिणामस्वरूप, वह लेख जहां डेटाबेस विकास परिदृश्य उल्लेख किया गया है सफलतापूर्वक दिखाया गया है।

इसके साथ, आपने किसी भी कॉलम के विरुद्ध उन्नत पूर्ण-पाठ प्रश्नों को लिखना सफलतापूर्वक सीख लिया है। यह आपको जहां भी लागू हो, अपने पेशेवर जीवन परिदृश्यों में पूर्ण-पाठ खोज चलाने के लिए तैयार होने के लिए परिष्कृत खोज आवश्यकताओं को पूरा करने में मदद करता है।

करने के लिए चीज़ें

अब जब आप उन्नत पूर्ण-पाठ प्रश्न लिख सकते हैं, तो आपको अपने कौशल में सुधार करने के लिए इन चीजों को आजमाना चाहिए:

  1. उन सभी लेखों को खोजने का प्रयास करें जहां उपसर्ग शब्द स्वतः है प्रयोग किया जाता है।
  2. इस लेख को ध्यान में रखते हुए, उन सभी पंक्तियों को खोजने के लिए निकटता खोज करने के लिए एक स्क्रिप्ट लिखने का प्रयास करें जहां आधुनिक शब्द है टूल्स word शब्द के निकट है .
  3. लिखे गए शब्द के सभी विभक्ति रूपों को खोजने का प्रयास करें ।

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कार्य बनाम संग्रहीत कार्यविधियाँ

  2. तालिका के सेट पर सीडीसी को अक्षम कैसे करें या SQL सर्वर में डेटाबेस में सभी तालिकाओं पर अक्षम करें - SQL सर्वर ट्यूटोरियल

  3. एसक्यूएल सर्वर (टी-एसक्यूएल) में संयोजन कैसे खोजें

  4. ऑडिट तालिका में SQL सर्वर में रिकॉर्ड परिवर्तन लॉग करें

  5. .mdf डेटाबेस को अपडेट करने में विफल क्योंकि डेटाबेस केवल पढ़ने के लिए है (Windows अनुप्रयोग)