لماذا لا SQL النص الكامل الفهرسة النتائج مقابل الكلمات التي تحتوي على #?

StackOverflow https://stackoverflow.com/questions/1042

سؤال

على سبيل المثال, الاستعلام بلدي هو كما يلي باستخدام 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 ويتم أيضا من خلال "خدمة الفهرسة" ، لذلك هذا قد يساعد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top