断字符和词干分析器

2024-04-04 07:18
文章标签 字符 分析器 词干

本文主要是介绍断字符和词干分析器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

断字符和词干分析器

 

断字符和词干分析器用于对所有全文索引数据执行语言分析。语言分析将涉及到查找词边界(断字)和组合动词(词干分析)。断字符和词干分析器是特定于语言的,并且各语言的语言分析规则也各不相同。对于给定语言,“断字符”通过根据语言的词法规则确定词的边界位置来标识各个词。每个词(也称为“标记”)使用压缩表示形式插入全文索引以减少其大小。“词干分析器”根据该语言的规则生成特定词的变形形式(例如,“running”、“ran”和“runner”是单词“run”的不同形式)。

使用特定于语言的断字符,能够使得为该语言生成的词更加准确。如果断字符用于整个语系而不是特定的子语言,将使用该语系中的主要语言。例如,使用法语断字符来处理加拿大法语文本。如果某一特定语言没有可用的断字符,将使用非特定语言断字符。使用非特定语言断字符时,词将在非特定语言字符(如空格和标点符号)处断开。

断字符注册

要想使用某种语言的断字符,就必须为其进行注册。对于已注册的断字符,关联的语言资源(词干分析器、干扰词(非索引字)和同义词库文件)也将可用于全文索引和查询操作。若要查看当前在 SQL Server 中注册了断字符的语言列表,请使用以下 Transact-SQL 语句:

SELECT * FROM sys.fulltext_languages

如果您添加、删除或更改了断字符,则需要刷新为全文索引和查询而支持的 Microsoft Windows 区域设置标识符 (LCID) 列表。有关详细信息,请参阅如何更改已注册的断字符和筛选器的列表 (Transact-SQL)

SQL Server 2008 附带有若干个经过许可的第三方断字符。您可以手动加载若干种语言(丹麦语、波兰语和土耳其语)的附加的第三方断字符(以及词干分析器)。有关详细信息,请参阅如何加载经过许可的第三方断字符

Full-Text Language 选项

对于 SQL Server 的本地化版本,SQL Server 安装程序将把 default full-text language 选项设置为服务器的语言(如果存在合适的匹配项)。对于 SQL Server 的非本地化版本,default full-text language 选项为“英语”。

创建或修改全文索引时,可以为每个全文索引列指定不同的语言。如果未指定列的语言,默认值是配置选项 default full-text language 的值。

有关详细信息,请参阅 default full-text language 选项

ms142509.note(zh-cn,SQL.105).gif注意:
在单个全文查询函数子句中列出的所有列必须使用同一语言,除非在查询中指定了 LANGUAGE 选项。所查询的用于全文索引列的语言确定了对全文查询谓词(CONTAINSFREETEXT)和函数(CONTAINSTABLEFREETEXTTABLE)的参数执行的语言分析。

 

 

对列创建全文索引时选择语言

创建全文索引时,建议为每个索引列都指定一种语言。如果未为列指定语言,则将使用系统默认语言。某列的语言确定使用什么断字符和词干分析器对该列创建索引。另外,该语言的同义词库文件将由针对相应列的全文查询使用。

如果要选择用于创建全文索引的列语言,有几个事项需要注意。这些注意事项均与全文引擎如何对文本进行词汇切分再编制其索引有关。有关详细信息,请参阅创建全文索引时选择语言的最佳实践

查看列的断字符语言

  • 如何查看或更改全文索引的属性 (SQL Server Management Studio)
  • sys.fulltext_index_columns (Transact-SQL)
    复制
    SELECT 'language_id' AS "LCID" FROM sys.fulltext_index_columns;
    
SQL Server 2008 中新断字符的影响

SQL Server 2008 包括 50 多种不同语言的断字符,其中的 23 种也存在于 SQL Server 2005 中。只有英语、朝鲜语、泰语和中文(所有形式)的断字符保持不变。对于其他语言,SQL Server 2008 引入了新一代断字符,这些断字符与早期断字符相比具有更好的语言规则并且更加准确。新断字符的行为可能与导入的 SQL Server 2005 全文索引中的断字符行为稍有不同。如果全文目录是在 SQL Server 2005 数据库升级到 SQL Server 2008 时导入的,这一点将非常重要。该全文目录中全文索引使用的一种或多种语言现在可能与新断字符关联。有关详细信息,请参阅全文搜索升级

SQL Server 2005 中支持的语言的断字符版本

只有英语、朝鲜语、泰语和中文(所有形式)的断字符保持不变。下表列出了存在于 SQL Server 2005 中的断字符,并指示在 SQL Server 2008 中是否已更新这些断字符。有关所有 SQL Server 2008 断字符的完整列表,请参阅 sys.fulltext_languages (Transact-SQL)

ms142509.note(zh-cn,SQL.105).gif注意:
默认情况下,已为大多数语言注册了断字符。但是,在默认情况下会禁用许多经过许可的第三方断字符。有关这些语言以及如何注册这些断字符的信息,请参阅如何加载经过许可的第三方断字符

 

 

语言 LCID 断字符

巴西语

1046

中文(中华人民共和国香港特别行政区)

3076

不变

中文(中华人民共和国澳门特别行政区)

5124

不变

中文(新加坡)

4100

不变

丹麦语(默认情况下禁用)

1030

不变

荷兰语

1043

英语

1033

不变

英语(英国)

2057

不变

法语

1036

德语

1031

意大利语

1040

日语

1041

朝鲜语

1042

不变

非特定语言

0

波兰语(默认情况下禁用)

1045

不变

葡萄牙语

2070

俄语

1049

简体中文

2052

不变

西班牙语

3082

瑞典语

1053

泰语

1054

不变

繁体中文

1028

不变

土耳其语(默认情况下禁用)

1055

不变

有关支持的语言的完整列表,请参阅 sys.fulltext_languages (Transact-SQL)

断字超时错误

在许多情况下可能会出现断字超时错误。有关这些情况及如何针对每种情况做出反应的信息,请参阅 MSSQLSERVER_30053

获取有关断字符的信息

查看断字符、同义词库和非索引字表组合的词汇切分结果

  • sys.dm_fts_parser (Transact-SQL).

返回有关已注册断字符的信息

  • sp_help_fulltext_system_components (Transact-SQL)

这篇关于断字符和词干分析器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/875138

相关文章

Java 字符数组转字符串的常用方法

《Java字符数组转字符串的常用方法》文章总结了在Java中将字符数组转换为字符串的几种常用方法,包括使用String构造函数、String.valueOf()方法、StringBuilder以及A... 目录1. 使用String构造函数1.1 基本转换方法1.2 注意事项2. 使用String.valu

Go语言使用Buffer实现高性能处理字节和字符

《Go语言使用Buffer实现高性能处理字节和字符》在Go中,bytes.Buffer是一个非常高效的类型,用于处理字节数据的读写操作,本文将详细介绍一下如何使用Buffer实现高性能处理字节和... 目录1. bytes.Buffer 的基本用法1.1. 创建和初始化 Buffer1.2. 使用 Writ

string字符会调用new分配堆内存吗

gcc的string默认大小是32个字节,字符串小于等于15直接保存在栈上,超过之后才会使用new分配。

如何将一个文件里不包含某个字符的行输出到另一个文件?

第一种: grep -v 'string' filename > newfilenamegrep -v 'string' filename >> newfilename 第二种: sed -n '/string/!'p filename > newfilenamesed -n '/string/!'p filename >> newfilename

【Python 千题 —— 算法篇】字符统计

Python 千题持续更新中 …… 脑图地址 👉:⭐https://twilight-fanyi.gitee.io/mind-map/Python千题.html⭐ 题目背景 在编程中,对字符串的字符统计是一个常见任务。这在文本处理、数据分析、词频统计、自然语言处理等领域有广泛应用。无论是统计字母出现的频率,还是分析不同字符类型的数量,字符串字符统计都是非常有用的技术。 字符统

C语言进阶【1】--字符函数和字符串函数【1】

本章概述 字符分类函数字符转换函数strlen的使用和模拟实现strcpy的使用和模拟实现strcat的使用和模拟实现strcmp的使用和模拟实现彩蛋时刻!!! 字符分类函数 字符: 这个概念,我们在以前的文章中讲过了。我们键盘输入的信息都是字符。字符大体可以分为两类——单个字符,字符串。而单个字符又可以进行分类——字母字符,数字字符,特殊字符和不可见字符。进行思维图展示: 在日

centOS7.0设置默认进入字符界面

刚装的,带有x window桌面,每次都是进的桌面,想改成自动进命令行的。记得以前是修改 /etc/inittab 但是这个版本inittab里的内容不一样了没有id:x:initdefault这一行而且我手动加上也不管用,这个centos 7下 /etc/inittab 的内容 Targets systemd uses targets which serve a simil

Python字符编码及应用

字符集概念 字符集就是一套文字符号及其编码的描述。从第一个计算机字符集ASCII开始,为了处理不同的文字,发明过几百种字符集,例如ASCII、USC、GBK、BIG5等,这些不同的字符集从收录到编码都各不相同。在编程中出现比较严重的问题是字符乱码。 几个概念 位:计算机的最小单位二进制中的一位,用二进制的0,1表示。 字节:八位组成一个字节。(位与字节有对应关系) 字符:我们肉眼可见的文字与符号。

如何判断一个数组中是否包含一个字符或字符串

第一种方法:遍历数组 String[] arr1 = {"1","2","3","4","6","7"}; for (int i = 0; i < arr1.length; i++) { if("5".equals(arr1[i])) { System.out.println("包含"); }else { System.out.println("不包含"); } } 第二种方法:先把数组

Oracle 数据库中 字符型字段 按数字排序

由于需要维护表里面的值,id主键是字符串型,保存的都是数字,每次都要看好久,才知道新增id,用哪个数字; 遇到了一个主键排序的问题。字符型的主键,保存的都是数字,数据导过来以后发现数据排序都是乱的,就想着按数字规则排序。 但发现to_number总是报错,就想着里面应该是有字符存在。后来使用了正则关系式,问题解决。 以下是正则关系式的两种用法,记录下来: 方法一: select * fr