एसक्यूएल फुल टेक्स्ट इंडेक्सिंग # # वाले शब्दों के लिए रिटर्न परिणाम क्यों नहीं देता है?

उदाहरण के लिए, मेरी क्वेरी SQL Server 2005 का उपयोग कर निम्न की तरह है:

SELECT * FROM Table WHERE FREETEXT(SearchField, 'c#') 

मेरे पास कॉलम सर्चफिल्ड का उपयोग करने के लिए परिभाषित एक पूर्ण टेक्स्ट इंडेक्स है जो उपयोग करते समय परिणाम देता है:

SELECT * FROM Table WHERE SearchField LIKE '%c#%'

मेरा मानना ​​है कि # एक विशेष पत्र है, तो मैं ऊपर दिए गए प्रश्न के लिए FREETEXT को सही तरीके से काम करने की अनुमति कैसे दूं?

0
जोड़ा संपादित
विचारों: 8
बस एक अनुमान है, लेकिन "सी \\ #" के बारे में कैसे?
जोड़ा लेखक Ryan Fox, स्रोत

2 उत्तर

इंडेक्सिंग सेवा क्वेरी भाषा के बारे में एक बहुत ही प्रतिकृति सहायता पृष्ठ का उद्धरण:

To use specially treated characters such as &, |, ^, #, @, $, (, ), in a query, enclose your query in quotation marks (?).

जहां तक ​​मुझे पता है, MSSQL में पूर्ण पाठ खोज इंडेक्सिंग सेवा द्वारा भी की जाती है, इसलिए इससे मदद मिल सकती है।

0
जोड़ा

# Char को विराम चिह्न के रूप में अनुक्रमित किया गया है और इसलिए अनदेखा किया गया है, इसलिए ऐसा लगता है कि हम हमारे शब्द अनुक्रमण से अनदेखा सूचियों से पत्र सी को हटा देंगे।

ऐसा करने के बाद स्थानीय रूप से इसका परीक्षण किया और इंडेक्स का पुनर्निर्माण किया और मुझे परिणाम मिल गए!

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

संपादित करें: मुझे यह जानकारी :

C# को c के रूप में अनुक्रमित किया गया है (यदि सी आपके शोर शब्द सूची में नहीं है, तो शोर शब्द सूचियों पर बाद में देखें), लेकिन सी # को सी # के रूप में अनुक्रमित किया गया है (SQL 2005 और SQL 2000 में Win2003 पर चल रहा है चाहे सी या सी है आपके शोर शब्द सूची में)। यह केवल सी # नहीं है जिसे सी # के रूप में संग्रहीत किया जाता है, लेकिन इसके बाद कोई भी पूंजी अक्षर # होता है। इसके विपरीत, सी ++ (और किसी भी अन्य निचले-चरण वाले अक्षर को ++ के बाद) को सी के रूप में अनुक्रमित किया जाता है (भले ही सी आपके शोर शब्द सूची में है)।

0
जोड़ा