Полнотекстовый поиск (sql server 2005) работает только по некоторым полям - PullRequest
0 голосов
/ 13 июля 2009

ОК, это ситуация ..

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

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 содержат текст на английском и греческом языках .. (не имеет значения)

Любая помощь будет принята с благодарностью

1 Ответ

0 голосов
/ 13 июля 2009

Просто пытаюсь понять, что происходит: что вы получаете с этим запросом здесь?

SELECT * FROM static WHERE FREETEXT(*, N'str')

Если вы явно не указываете какой-либо столбец для поиска - дает ли он ожидаемые результаты?

Еще один момент: я думаю, что в вашем заявлении указан неверный идентификатор языка. Согласно электронной документации по SQL Server:

Когда указано как строка, language_term соответствует псевдониму значение столбца в syslanguages Системная таблица. Строка должна быть заключенные в одинарные кавычки, как в 'language_term'. Когда указано как целое число language_term является фактический LCID , который идентифицирует язык.

и из того, что я нашел в интернете при поиске, LCID для греческого - 1032, а не 19. Можете ли вы попробовать с 1032 вместо 19? Это имеет значение?

Марк

...