我有一个全文索引,我以前可以搜索“avignon”并使用CONTAINS获取结果,例如“Les demoiselles d'avignon”。
除非我特别包含撇号,例如“d'avignon”,否则搜索不再有效。这是我可以在索引中设置的东西吗?它是否随SQL Server 2014而改变?我升级了服务器,直到现在才注意到它。
答案 0 :(得分:0)
首先,您需要检查CONTAINS
中引用的列的“全文索引”中使用了哪种语言:
select ftc.name as 'Full Text Catalog', ftcols.column_id, ftcols.language_id, ftl.name as 'Language'
from sys.fulltext_catalogs ftc
join sys.fulltext_indexes fti on fti.fulltext_catalog_id=ftc.fulltext_catalog_id
join sys.fulltext_index_columns ftcols on ftcols.object_id=fti.object_id
join sys.fulltext_languages ftl on ftl.lcid=ftcols.language_id
where ftc.name='FTS_Catalog_Name' -- as seen in SSMS under DB_Name->Storage->Full Text Catalogs
上面的查询应产生与下面类似的结果:
然后,根据OP注释,您需要将相关列的语言更改为Neutral (LCID=0)
:
alter fulltext index on table_name disable
alter fulltext index on table_name drop (fts_column_name)
alter fulltext index on table_name add (fts_column_name LANGUAGE 0 )
alter fulltext index on table_name enable
HTH