بحث FullText (SQL Server 2005) يعمل فقط على بعض الحقول
-
12-09-2019 - |
سؤال
حسنا هذا هو الوضع ..
أتمكن من البحث النص الكامل على طاولة ولكنه يعمل فقط في بعض الحقول ..
CREATE FULLTEXT CATALOG [defaultcatalog]
CREATE UNIQUE INDEX ui_staticid on static(id)
CREATE FULLTEXT INDEX ON static(title_gr LANGUAGE 19,title_en,description_gr LANGUAGE 19,description_en) KEY INDEX staticid ON [defaultcatalog] WITH CHANGE_TRACKING AUTO
الآن لماذا سيحقق ما يلي النتائج
Select * from static where freetext(description_en, N'str')
وهذا ليس (في حين أن كلاهما لديه نص مع شارع في ذلك ..)
Select * from static where freetext(description_gr, N'str')
(لقد جربت ذلك أيضا دون مواصفات اللغة - اليونانية في هذه الحالة) (تجميع قاعدة البيانات هي GREEK_CI_AS) BTW
Select * from static where description_gr like N'%str%'
سوف تعمل على ما يرام ..
جميع الحقول هي نوع NVARCHAR وحقول _GR النص الإنجليزية واليونانية .. (لا يهم)
كل المساعدة سوف تكون موضع تقدير كبير
المحلول
مجرد محاولة لمعرفة ما يحدث: ماذا تحصل مع هذا الاستعلام هنا؟
SELECT * FROM static WHERE FREETEXT(*, N'str')
إذا لم تقم بتحديد أي عمود بشكل صريح للبحث في - هل يعطيك النتائج المتوقعة؟
نقطة أخرى: أعتقد أن لديك معرف لغة خاطئة في بيانك. وفقا ل SQL Server Books Online:
عند تحديدها كسلسلة، يتوافق Language_term مع قيمة عمود الاسم المستعار في جدول نظام Syslanguages. يجب إرفاق السلسلة بعلامات اقتباس واحدة، كما هو الحال في "language_term". عند تحديد عدد صحيح، Language_term هو LCID الفعلي الذي يحدد اللغة.
ومن ما وجدته على شبكة الإنترنت البحث حول اليونانية هو 1032 - وليس 19. هل يمكنك تجربة 1032 بدلا من 19؟ هل هذا يحدث فرقا؟
مارك