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

问题描述 投票:1回答:1

我有一个全文索引,我曾经能够搜索“avignon”并使用CONTAINS获得一个结果,例如“Les demoiselles d'avignon”。

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

sql-server full-text-search
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.