全文搜索(sql server 2005)仅适用于某些字段

时间:2009-07-13 15:06:56

标签: sql-server-2005 unicode full-text-search nvarchar freetext

好的就是这种情况..

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

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 :(得分:0)

只是想弄清楚发生了什么:这里有什么问题?

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

如果您没有明确指定要搜索的任何列,它是否会为您提供预期的结果?

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

  

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

从我在互联网上搜索到的内容来看,希腊语的LCID是1032 - 而不是19.你可以尝试使用1032而不是19吗?这有什么不同吗?

马克