لماذا لا SQL النص الكامل الفهرسة النتائج مقابل الكلمات التي تحتوي على #?
-
08-06-2019 - |
سؤال
على سبيل المثال, الاستعلام بلدي هو كما يلي باستخدام SQL Server 2005:
SELECT * FROM Table WHERE FREETEXT(SearchField, 'c#')
لدي النص الكامل مؤشر تعريف استخدام عمود SearchField التي تقوم بإرجاع النتائج عند استخدام:
SELECT * FROM Table WHERE SearchField LIKE '%c#%'
أعتقد # هو رسالة خاصة, فكيف تسمح FREETEXT للعمل بشكل صحيح الاستعلام أعلاه ؟
المحلول
رقم شار يتم فهرستها كما الترقيم وبالتالي تجاهلها ، لذلك يبدو أننا سوف إزالة حرف C من كلمة الفهرسة تجاهل القوائم.
اختبارها محليا بعد القيام بذلك و إعادة إنشاء الفهارس و أحصل على النتائج!
النظر في استخدام كلمة مختلفة الكسارة اللغة على عمود مفهرس ، حتى أن تلك الأحرف الخاصة لا تجاهلها.
تحرير:وجدت أيضا هذه المعلومات:
c# فهرسة كما ج (إذا ج في الكلمة القائمة ، انظر المزيد عن الضوضاء قوائم الكلمات في وقت لاحق) ، ولكن C# فهرسة مثل C# (في SQL server 2005 و SQL 2000 يعمل على Win2003 بغض النظر عما إذا ج أو ج في الكلمة قائمة).ليس فقط C# التي يتم تخزينها مثل C#, ولكن أي حرف تلاه #.على العكس من ذلك, c++ ( أي أقل فتش رسالة تليها ++) فهرسة كما ج (بغض النظر عما إذا ج في الكلمة قائمة).
نصائح أخرى
نقلا عن الكثير من تكرارها صفحة المساعدة بخصوص خدمة الفهرسة لغة الاستعلام:
استخدام المعالجة خصيصا الشخصيات مثل &, |, ^, #, @, $, (, ), في استعلام أرفق الاستعلام الخاص بك في علامات اقتباس (").
بقدر ما أعرف, البحث عن النص الكامل في MSSQL
ويتم أيضا من خلال "خدمة الفهرسة" ، لذلك هذا قد يساعد.