2011-11-01 19 views
5

एसक्यूएल सर्वर 2008 का उपयोग करके आप वास्तव में पूर्ण-पाठ खोज का उपयोग करके सटीक स्ट्रिंग मिलान कैसे प्राप्त कर सकते हैं। मुझे इसके साथ एक कठिन समय है और मुझे कहीं भी ऑनलाइन संतोषजनक समाधान नहीं मिल सका।पूर्ण-पाठ खोज का उपयोग कर सटीक मिलान प्राप्त करें

उदाहरण के लिए, यदि मैं स्ट्रिंग "बोजन स्क्रचेव्स्की" की खोज कर रहा हूं, तो मैं पहले परिणाम को बिल्कुल ठीक करना चाहता हूं।

अब तक मैंने स्ट्रिंग को स्वरूपित करने की कोशिश की है: "बोजन * निकट स्केचेव्स्की *" और परिणाम प्राप्त करने के लिए कंटेनस्टबल कॉल करें, लेकिन यह स्ट्रिंग बोजाना और बोजनाना आदि के रूप में अधिक परिणाम लौटने के लिए स्वरूपित है। मैंने भी आदेश देने की कोशिश की रैंक, लेकिन अभी भी कोई सफलता नहीं है।

इसके अलावा, मेरी स्ट्रिंग में मैं की तरह एक नंबर अनुक्रम है: "3 1 7" है, लेकिन मौजूदा स्वरूपण के साथ यह भी देता है "7 1 3" आदि

उदाहरण:

DECLARE @var varchar(4000); 
SET @var = '"Oxford*" NEAR 24 NEAR 7 NEAR 5 NEAR "London*"' 
SELECT [Key] FROM CONTAINSTABLE(dbo.[MyTable], [MyField], @var); 

मैं सटीक क्रम प्राप्त करने में सक्षम होना चाहता हूं। नतीजतन "ऑक्सफोर्ड 7 24 5 लंदन" नहीं मिला।

मैं इसे सही ढंग से पूरा करने के लिए स्ट्रिंग को कैसे प्रारूपित करूं?

उत्तर

0

शायद एक दृष्टिकोण पूर्ण-पाठ खोज के साथ कई परिणाम का चयन करने और हो सकता है तो SELECT उन परिणामों से विशिष्ट है। लेकिन शायद इसके लिए एक बेहतर समाधान हो सकता है।

मैंने इस दृष्टिकोण की कोशिश की और वास्तव में काम किया। यह मूल्य SELECT मूल्य के लिए बहुत तेज़ काम करता है।

1

वहाँ 2 विकल्प

1) यह सभी आइटम जो उनके नाम में माउंटेन है

SELECT Name, ListPrice 
FROM Production.Product 
WHERE ListPrice = 80.99 
    AND CONTAINS(Name, 'Mountain'); 
GO 

2) यह सभी आइटम जो दस्तावेज़ में इन 3 तार कोई बात नहीं है मिल जाएगा मिल जाएगा क्या आदेश

SELECT Title 
FROM Production.Document 
WHERE FREETEXT (Document, 'vital safety components'); 

यह वास्तव में आप जो चाहते हैं उस पर निर्भर करता है लेकिन मैं पूरी तरह से समझ नहीं पाया।

यदि मुझे बिंदु याद आ रहा है तो कृपया एक नमूना पोस्ट करें और परिणाम क्या होना चाहिए।

kr,

क्रिस्टोफ

+0

@ क्रिस्टॉफ - उदाहरण: यदि मैं इस तरह की एक स्ट्रिंग की खोज करता हूं: "ऑक्सफोर्ड 24 3 6 लंदन" और यदि "ऑक्सफोर्ड 3 24 6 लंदन" है तो यह भी वापस कर दिया जाएगा। मैं सटीक क्रम में केवल सटीक मैच चाहता हूं। – TheBoyan

+0

संदर्भ के लिए यह उदाहरण है जहां से उदाहरण मिले हैं: http://msdn.microsoft.com/en-us/library/ms142583.aspx – Mike

संबंधित मुद्दे