sql server全文搜索:英文默认的断字符是什么?

时间:2012-09-27 20:15:53

标签: sql-server full-text-search wordbreaker

在sql server全文搜索中,哪里可以找到英文默认断字符列表?

3 个答案:

答案 0 :(得分:0)

中性断字符(空格和标点符号)+区域设置特定值。因此,它取决于正在运行的英语语言环境。

请参阅http://technet.microsoft.com/en-us/library/ms142509(v=sql.100).aspx

答案 1 :(得分:0)

通过运行以下查询可以获得与其关联的断字符的语言列表 -

SELECT * FROM sys.fulltext_languages; 

我不确定是否有存储过程或内部表显示与每种语言关联的.dll文件,但可以在以下注册表项下查找 -

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\{SQL Instance Name}\MSSearch\CLSID\

每个CLSID的语言映射都存储在MSSearch \ Language中。

答案 2 :(得分:0)

使用存储过程sys.dm_fts_parser,您可以针对分词系统测试给定的字符串。以下查询测试从char(32)到char(255)的所有ASCII字符,并返回当前活动的分词器字符列表。

declare @i integer
declare @cnt integer
set @i=32
while @i<255
begin
  set @cnt=0
  select @cnt=COUNT(1) FROM sys.dm_fts_parser ('"word1'+CHAR(@i)+'word2"', 1033, 0, 0)
  if @cnt>1
  begin
  print CONCAT('ASCII ', @i, ': ', char(@i))
  end
  set @i=@i+1
end

结果:

ASCII 32:  
ASCII 33: !
ASCII 34: "
ASCII 35: #
ASCII 36: $
ASCII 37: %
ASCII 38: &
ASCII 40: (
ASCII 41: )
ASCII 42: *
ASCII 43: +
... and so on ...

来源:https://stuart-moore.com/generating-a-list-of-full-text-word-breakers-for-sql-server/