Полнотекстовый поиск (sql server 2005) работает только по некоторым полям

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

Вопрос

Ладно, такова ситуация..

Я включаю полнотекстовый поиск по таблице, но он работает только по некоторым полям..

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?Имеет ли это значение?

Марк

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top