पूर्ण या अनुक्रमणित नहीं होने के कारण तालिका या अनुक्रमित दृश्य पर किसी निष्कर्ष या स्वतंत्रता का उपयोग नहीं किया जा सकता


96

मुझे अपने SQL सर्वर 2008 R2 डेटाबेस में निम्नलिखित त्रुटि हो रही है:

तालिका या अनुक्रमित दृश्य 'tblArmy' पर एक CONTAINSया FREETEXTविधेय का उपयोग नहीं कर सकता क्योंकि यह पूर्ण-पाठ अनुक्रमित नहीं है।


1
क्या आपने वास्तव में एक पूर्ण पाठ कैटलॉग बनाया है?
एलेक्स के।

जवाबों:


112
  1. सुनिश्चित करें कि आपके पास पूर्ण-पाठ खोज सुविधा स्थापित है।

    पूर्ण-पाठ खोज सेटअप

  2. पूर्ण-पाठ खोज कैटलॉग बनाएं।

     use AdventureWorks
     create fulltext catalog FullTextCatalog as default
    
     select *
     from sys.fulltext_catalogs
    
  3. पूर्ण-पाठ खोज इंडेक्स बनाएं।

     create fulltext index on Production.ProductDescription(Description)
     key index PK_ProductDescription_ProductDescriptionID
    

    इंडेक्स बनाने से पहले, सुनिश्चित करें:
    - आपके पास पहले से ही टेबल पर पूर्ण-पाठ खोज इंडेक्स नहीं है, क्योंकि टेबल पर केवल एक पूर्ण-पाठ खोज इंडेक्स की अनुमति है
    - टेबल पर एक अद्वितीय इंडेक्स मौजूद है। सूचकांक एकल-कुंजी कॉलम पर आधारित होना चाहिए, जो NULL की अनुमति नहीं देता है।
    - पूर्ण-पाठ सूची मौजूद है। यदि कोई डिफ़ॉल्ट पूर्ण-पाठ कैटलॉग नहीं है, तो आपको स्पष्ट रूप से पूर्ण-पाठ कैटलॉग नाम निर्दिष्ट करना होगा।

आप SQL गंभीर प्रबंधन स्टूडियो में चरण 2 और 3 कर सकते हैं। ऑब्जेक्ट एक्सप्लोरर में, एक टेबल पर राइट क्लिक करें, Full-Text indexमेनू आइटम और फिर Define Full-Text Index...सब-मेनू आइटम चुनें। पूर्ण-पाठ अनुक्रमण विज़ार्ड आपको प्रक्रिया के माध्यम से मार्गदर्शन करेगा। अगर आपके पास अभी तक ऐसा नहीं है तो यह आपके लिए एक पूर्ण-पाठ खोज कैटलॉग भी बनाएगा।

यहाँ छवि विवरण दर्ज करें

आप MSDN पर अधिक जानकारी पा सकते हैं


अच्छी जानकारी एलेक्स! नोट: Azure SQL का उपयोग करने वालों के लिए, इसमें अभी Contains Table का समर्थन नहीं है। यहां देखें: msdn.microsoft.com/library/azure/ee336253.aspx
टर्मन जूल

इसके अलावा, अगर SQL Express Advanced Services का उपयोग किया जाता है, तो एक पूर्ण टेक्स्ट इंडेक्स बनाने के लिए यहां देखें: stackoverflow.com/questions/10407337/…
टर्मापो

70

इसके लिए वर्कअराउंड CONTAINS: यदि आप कॉलम पर एक पूर्ण टेक्स्ट इंडेक्स नहीं बनाना चाहते हैं, और प्रदर्शन आपकी प्राथमिकताओं में से एक नहीं है तो आप इसका उपयोग कर सकते हैंLIKE कथन का जिसे किसी पूर्व कॉन्फ़िगरेशन की आवश्यकता नहीं है:

उदाहरण: अक्षर Q वाले सभी उत्पाद ढूंढें:

SELECT ID, ProductName
FROM [ProductsDB].[dbo].[Products]
WHERE [ProductsDB].[dbo].[Products].ProductName LIKE '%Q%'

1
लिंक । LIKE Transact-SQL विधेय केवल चरित्र पैटर्न पर काम करता है। साथ ही, आप स्वरूपित बाइनरी डेटा क्वेरी के लिए LIKE विधेय का उपयोग नहीं कर सकते। इसके अलावा, असंरचित पाठ डेटा की एक बड़ी राशि के खिलाफ एक LIKE क्वेरी समान डेटा के विरुद्ध एक पूर्ण-पाठ क्वेरी की तुलना में बहुत धीमी है।
Manolis

2
आह, मीठा ... आसान, गोल-गोल तरीका, जिससे आपको अपने इंस्टॉलर को खोदने की आवश्यकता नहीं है और अपने पर्यावरण सेटिंग्स के साथ चारों ओर घूमना पड़ता है। बहुत बढ़िया!
क्रिस्टीन

21

आपको Full-Text-Indexडेटाबेस में सभी तालिकाओं पर परिभाषित करना होगा जहां आपको एक क्वेरी का उपयोग करने की आवश्यकता होती है CONTAINSजिसमें कुछ समय लगेगा।

इसके बजाय आप का उपयोग कर सकते हैं LIKE जो आपको तालिकाओं के लिए किसी भी सेटिंग्स को समायोजित करने की आवश्यकता के बिना त्वरित परिणाम देगा।

उदाहरण:

SELECT * FROM ChartOfAccounts WHERE AccountName LIKE '%Tax%'

के साथ प्राप्त एक ही परिणाम के साथ प्राप्त किया CONTAINSजा सकता है LIKE

परिणाम देखें: यहाँ छवि विवरण दर्ज करें


यह वास्तव में चतुर है
WonderWorker

6
यह एक अच्छी चाल है, लेकिन जिस तरह से यह जवाब है वह गलत है। "बस" इसका उपयोग न करें। ऐसा करने के लिए कुछ गंभीर प्रदर्शन निहितार्थ हैं और किसी को भी उत्पादन प्रणाली में डालने के लिए गैर-अनुक्रमित स्तंभ पर इस तरह से पूर्ण तालिका स्कैन करने के बारे में बहुत सावधानी से सोचना चाहिए।
caesay

3

आपको पूर्ण-पाठ अनुक्रमण के लिए तालिका को सक्षम करने की आवश्यकता हो सकती है ।


सक्षम / अक्षम करें पूर्ण पाठ खोज को संदर्भ मेनू में धूसर कर दिया जाता है। मुझे लगता है कि मुझे पूर्ण पाठ खोज स्थापित करने की आवश्यकता है। मैं पूर्ण पाठ खोज कैसे स्थापित कर सकता हूं?
डॉटनेटस्पैरो

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

जब मैं SQL सर्वर 2008 R2 इंस्टॉलर चलाते हैं, तो मुझे फीचर जोड़ने का विकल्प नहीं दिखता।
डॉटनेटस्पेर

1

आपको उन विशिष्ट क्षेत्रों पर फुलटेक्स इंडेक्स जोड़ना होगा जिन्हें आप खोजना चाहते हैं।

ALTER TABLE news ADD FULLTEXT(headline, story);

जहां "समाचार" आपकी तालिका है और "शीर्षक, कहानी" आप फुलटैक्स खोज के लिए सक्षम करने के लिए अभ्यस्त हैं


1

स्तंभ पूर्ण पाठ को सही पर सेट करने के लिए एक और समाधान है।

उदाहरण के लिए ये समाधान मेरे काम नहीं आया

ALTER TABLE news ADD FULLTEXT(headline, story);

मेरा समाधान।

  1. तालिका पर राइट क्लिक करें
  2. डिज़ाइन
  3. स्तंभ पर राइट क्लिक करें जिसे आप संपादित करना चाहते हैं
  4. पूर्ण पाठ सूचकांक
  5. जोड़ना
  6. बंद करे
  7. ताज़ा करना

अगला कदम

  1. तालिका पर राइट क्लिक करें
  2. डिज़ाइन
  3. उस कॉलम पर क्लिक करें जिसे आप संपादित करना चाहते हैं
  4. Mssql के नीचे आपको टैब "कॉलम गुण" होगा
  5. पूर्ण-पाठ विशिष्टता -> (पूर्ण-पाठ अनुक्रमित) सही पर सेट है।

ताज़ा करना

Mssql 2014 का संस्करण


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.