Полнотекстовый поиск (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')
а это нет (хотя у обоих есть текст с str в нем ..)
Select * from static where freetext(description_gr, N'str')
(я пробовал это также без спецификации языка - в данном случае греческого) (параметры сортировки базы данных - Greek_CI_AS) кстати
Select * from static where description_gr like N'%str%'
будет работать просто отлично ..
все поля имеют тип nvarchar, а поля _gr содержат текст на английском и греческом языках .. (не должно иметь значения)
Любая помощь будет высоко оценена
Решение
Просто пытаюсь понять, что происходит:что вы получаете с помощью этого запроса здесь?
SELECT * FROM static WHERE FREETEXT(*, N'str')
Если вы явно не указываете какой-либо столбец для поиска - дает ли это вам ожидаемые результаты?
Еще один момент:Я думаю, что у вас неверный языковой код в вашем заявлении.Согласно онлайн-книгам по SQL Server:
Если указано в виде строки, language_term соответствует псевдониму значение столбца в системной таблице syslanguages .Строка должна быть заключена в одинарные кавычки, как в 'language_term'. Если указано как целое число, language_term - это фактический LCID это определяет язык.
и из того, что я нашел в Интернете, поискав по всему миру, LCID для греческого языка равен 1032, а не 19.Можете ли вы попробовать использовать 1032 вместо 19?Имеет ли это значение?
Марк