SQL Server自由文本搜索中的撇号

时间:2017-10-04 01:35:08

标签: sql-server full-text-search

我有一个全文索引,我以前可以搜索“avignon”并使用CONTAINS获取结果,例如“Les demoiselles d'avignon”。

除非我特别包含撇号,例如“d'avignon”,否则搜索不再有效。这是我可以在索引中设置的东西吗?它是否随SQL Server 2014而改变?我升级了服务器,直到现在才注意到它。

1 个答案:

答案 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

上面的查询应产生与下面类似的结果:

FTS Languages per column

然后,根据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