I have two different environments, a LIVE and a STAGING environment.
These are running SQL Server 2016 web edition but there are slight differences in the version of both the SQL host itself, and some full text components, namely the word breaker (MsWb7.dll)
LIVE: SQL: 13.0.1728.2, Word breaker: 15.0.4569.1503
STAGING: SQL: 13.0.4466.4, Word breaker: 14.0.4763.1000
I obtain the wordbreaker versions using:
EXEC sp_help_fulltext_system_components 'wordbreaker';
I am using sys.dm_fts_parser
to break a word using an underscore:
SELECT *
FROM sys.dm_fts_parser('xxxx_yyyy', 1033, 0, 0)
WHERE 1033
is the LCID for English.
Here are the results in LIVE:
keyword group_id phrase_id occurrence special_term display_term expansion_type source_term
---------------------------------------------------------------------------------------------------------------------------------------
0x006200750069006C005F006E003000350030 1 0 1 Exact Match xxxx_yyyy 0 xxxx_yyyy
0x006200750069006C 1 0 1 Exact Match xxxx 0 xxxx_yyyy
0x006E003000350030 1 0 2 Exact Match yyyy 0 xxxx_yyyy
And the results in STAGING:
keyword group_id phrase_id occurrence special_term display_term expansion_type source_term
---------------------------------------------------------------------------------------------------------------------------------------
0x006200750069006C005F006E003000350030 1 0 1 Exact Match xxxx_yyyy
I can't see how I can control what characters are used by the wordbreaker, this seems hardcoded, which suggests that upgrading the wordbreaker component is the way forward, but I can't find any information on how to do that.
Anybody else experience this?