मैं वर्तमान में एक ऐसे एप्लिकेशन पर काम कर रहा हूं जहां हमारे पास एक SQL-Server डेटाबेस है और मुझे एक पूर्ण पाठ खोज काम करने की आवश्यकता है जो हमें लोगों के नामों की खोज करने की अनुमति देता है।एसक्यूएल सर्वर पूर्ण पाठ खोज
वर्तमान में उपयोगकर्ता एक ऐसे नाम फ़ील्ड में प्रवेश कर सकता है जो 3 अलग वर्चर्स कोल्स खोजता है। पहला, अंतिम, मध्य नाम
तो कहें कि मेरे पास निम्नलिखित जानकारी के साथ 3 पंक्तियां हैं।
1 - फिलिप - जम्मू - फ्राई
2 - एमी - शून्य - वोंग
3 - लियो - शून्य - वोंग
उपयोगकर्ता फ्राई 'कहीं भी होगी जैसे नाम दर्ज करता है वापसी पंक्ति 1. हालांकि अगर वे फिलिप फ्राई, या फ्रा, या फिल में प्रवेश करते हैं तो उन्हें कुछ भी नहीं मिलता .. और मुझे समझ में नहीं आता कि यह क्यों कर रहा है। यदि वे वोंग की खोज करते हैं तो वे पंक्तियों 2 और 3 प्राप्त करते हैं यदि वे एमी वोंग की खोज करते हैं तो उन्हें फिर से कुछ भी नहीं मिलता है।
वर्तमान में क्वेरी CONTAINSTABLE का उपयोग कर रही है, लेकिन मैंने परिणामों में किसी भी उल्लेखनीय अंतर के बिना FREETEXTTABLE, CONTAINS, और FREETEXT के साथ स्विच किया है। तालिका विधियों को प्राथमिकता दी जाती है क्योंकि वे समान परिणाम लौटाते हैं लेकिन रैंकिंग के साथ।
यहां प्रश्न है।
....
@Name nvarchar(100),
....
--""s added to prevent crash if searching on more then one word.
DECLARE @SearchString varchar(100)
SET @SearchString = '"'[email protected]+'"'
SELECT Per.Lastname, Per.Firstname, Per.MiddleName
FROM Person as Per
INNER JOIN CONTAINSTABLE(Person, (LastName, Firstname, MiddleName), @SearchString)
AS KEYTBL
ON Per.Person_ID = KEYTBL.[KEY]
WHERE KEY_TBL.RANK > 2
ORDER BY KEYTBL.RANK DESC;
....
कोई विचार ...? यह पूर्ण पाठ खोज सही तरीके से क्यों काम नहीं कर रही है?
ध्यान दें कि वाइल्डकार्ड वर्णों के रूप में तारांकन केवल खोज शब्द के ** अंत ** पर उपयोग किए जाने पर ही काम करते हैं। एक खोज शब्द की शुरुआत में तारों को पूरी तरह से पूर्ण पाठ खोज इंजन द्वारा अनदेखा किया जाता है। – RSW
उत्तर के लिए धन्यवाद। आप लीला और बेंडर भूल गए। क्या मैं इसके लिए लुसीन का उपयोग कर सकता हूं? –