0

好的,情况就是这样。。

我在表格上启用全文搜索,但它只适用于某些字段..

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 字段包含英语和希腊语文本..(应该没关系)

所有帮助将不胜感激

4

1 回答 1

0

只是想弄清楚发生了什么:你从这个查询中得到什么?

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

如果您没有明确指定要搜索的任何列 - 它会给您预期的结果吗?

另一点:我认为您的陈述中有错误的语言 ID。根据 SQL Server 联机丛书:

当指定为字符串时,language_term 对应于 syslanguages 系统表中的别名列值。字符串必须用单引号括起来,如“language_term”。当指定为整数时,language_term 是标识语言的实际 LCID。

根据我在互联网上搜索的结果,希腊语的 LCID 是 1032 - 而不是 19。你可以尝试使用 1032 而不是 19 吗?这有什么区别吗?

马克

于 2009-07-13T15:18:55.567 回答