मुझे अपने SQL सर्वर 2008 R2 डेटाबेस में निम्नलिखित त्रुटि हो रही है:
तालिका या अनुक्रमित दृश्य 'tblArmy' पर एक
CONTAINS
याFREETEXT
विधेय का उपयोग नहीं कर सकता क्योंकि यह पूर्ण-पाठ अनुक्रमित नहीं है।
मुझे अपने SQL सर्वर 2008 R2 डेटाबेस में निम्नलिखित त्रुटि हो रही है:
तालिका या अनुक्रमित दृश्य 'tblArmy' पर एक
CONTAINS
याFREETEXT
विधेय का उपयोग नहीं कर सकता क्योंकि यह पूर्ण-पाठ अनुक्रमित नहीं है।
जवाबों:
सुनिश्चित करें कि आपके पास पूर्ण-पाठ खोज सुविधा स्थापित है।
पूर्ण-पाठ खोज कैटलॉग बनाएं।
use AdventureWorks
create fulltext catalog FullTextCatalog as default
select *
from sys.fulltext_catalogs
पूर्ण-पाठ खोज इंडेक्स बनाएं।
create fulltext index on Production.ProductDescription(Description)
key index PK_ProductDescription_ProductDescriptionID
इंडेक्स बनाने से पहले, सुनिश्चित करें:
- आपके पास पहले से ही टेबल पर पूर्ण-पाठ खोज इंडेक्स नहीं है, क्योंकि टेबल पर केवल एक पूर्ण-पाठ खोज इंडेक्स की अनुमति है
- टेबल पर एक अद्वितीय इंडेक्स मौजूद है। सूचकांक एकल-कुंजी कॉलम पर आधारित होना चाहिए, जो NULL की अनुमति नहीं देता है।
- पूर्ण-पाठ सूची मौजूद है। यदि कोई डिफ़ॉल्ट पूर्ण-पाठ कैटलॉग नहीं है, तो आपको स्पष्ट रूप से पूर्ण-पाठ कैटलॉग नाम निर्दिष्ट करना होगा।
आप SQL गंभीर प्रबंधन स्टूडियो में चरण 2 और 3 कर सकते हैं। ऑब्जेक्ट एक्सप्लोरर में, एक टेबल पर राइट क्लिक करें, Full-Text index
मेनू आइटम और फिर Define Full-Text Index...
सब-मेनू आइटम चुनें। पूर्ण-पाठ अनुक्रमण विज़ार्ड आपको प्रक्रिया के माध्यम से मार्गदर्शन करेगा। अगर आपके पास अभी तक ऐसा नहीं है तो यह आपके लिए एक पूर्ण-पाठ खोज कैटलॉग भी बनाएगा।
आप MSDN पर अधिक जानकारी पा सकते हैं
इसके लिए वर्कअराउंड CONTAINS
: यदि आप कॉलम पर एक पूर्ण टेक्स्ट इंडेक्स नहीं बनाना चाहते हैं, और प्रदर्शन आपकी प्राथमिकताओं में से एक नहीं है तो आप इसका उपयोग कर सकते हैंLIKE
कथन का जिसे किसी पूर्व कॉन्फ़िगरेशन की आवश्यकता नहीं है:
उदाहरण: अक्षर Q वाले सभी उत्पाद ढूंढें:
SELECT ID, ProductName
FROM [ProductsDB].[dbo].[Products]
WHERE [ProductsDB].[dbo].[Products].ProductName LIKE '%Q%'
आपको Full-Text-Index
डेटाबेस में सभी तालिकाओं पर परिभाषित करना होगा जहां आपको एक क्वेरी का उपयोग करने की आवश्यकता होती है CONTAINS
जिसमें कुछ समय लगेगा।
इसके बजाय आप का उपयोग कर सकते हैं LIKE
जो आपको तालिकाओं के लिए किसी भी सेटिंग्स को समायोजित करने की आवश्यकता के बिना त्वरित परिणाम देगा।
उदाहरण:
SELECT * FROM ChartOfAccounts WHERE AccountName LIKE '%Tax%'
के साथ प्राप्त एक ही परिणाम के साथ प्राप्त किया CONTAINS
जा सकता है LIKE
।
आपको पूर्ण-पाठ अनुक्रमण के लिए तालिका को सक्षम करने की आवश्यकता हो सकती है ।
आपको उन विशिष्ट क्षेत्रों पर फुलटेक्स इंडेक्स जोड़ना होगा जिन्हें आप खोजना चाहते हैं।
ALTER TABLE news ADD FULLTEXT(headline, story);
जहां "समाचार" आपकी तालिका है और "शीर्षक, कहानी" आप फुलटैक्स खोज के लिए सक्षम करने के लिए अभ्यस्त हैं
स्तंभ पूर्ण पाठ को सही पर सेट करने के लिए एक और समाधान है।
उदाहरण के लिए ये समाधान मेरे काम नहीं आया
ALTER TABLE news ADD FULLTEXT(headline, story);
मेरा समाधान।
अगला कदम
ताज़ा करना
Mssql 2014 का संस्करण
Select * from table
where CONTAINS([Column], '"A00*"')
के रूप में% के रूप में ही कार्य करेगा
where [Column] Like 'A00%'