断字符和词干分析器

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

相关文章

剑指offer(C++)--第一个只出现一次的字符

题目 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). class Solution {public:int FirstNotRepeatingChar(string str) {map<char, int> mp;for(int i = 0; i < str.size(); ++i)m

linux匹配Nginx日志,某个字符开头和结尾的字符串

匹配 os=1 开头, &ip结尾的字符串 cat 2018-06-07.log | egrep -o ‘os=1.*.&ip’ 存入日志。然后使用submit 前面和后面的值去掉,剩下就是需要的字符串。 cat 2018-06-07.log | egrep -o ‘os=1.*.&ip’ >log.log

C语言中的字符输入/输出和验证输入

在C语言中,字符输入/输出功能允许程序与用户进行交互,读取用户的输入信息并展示输出结果。同时,验证输入的作用在于确保用户输入的数据符合预期,以提高程序的稳定性和可靠性,防止无效输入引发的错误或异常行为,从而提供更好的用户体验。 基础概念 输入(Input):指的是向程序填充数据的过程,通常来源于用户输入、文件读取或其他外部数据源。 输出(Output):指的是将数据显示在屏幕上、打印机上或

深入浅出「字符,字节和编码」

“字符与编码”是一个被经常讨论的话题。即使这样,时常出现的乱码仍然困扰着大家。虽然我们有很多的办法可以用来消除乱码,但我们并不一定理解这些办法的内在原理。而有的乱码产生的原因,实际上由于底层代码本身有问题所导致的。因此,不仅是初学者会对字符编码感到模糊,有的底层开发人员同样对字符编码缺乏准确的理解。 转载自: 原创文章,转载请保留或注明出处:http://www.regexlab.com/zh

C语言之字符处理函数

文章目录 1 字符处理函数1.1 检查型函数1.1.1 检查字符是字母或数字isalnum1.1.2 检查字符是否是字母isalpha1.1.3 检查字符是否是ASCII码isascii1.1.4 检查字符是否是控制字符iscntrl1.1.5 检查字符是否是数字字符isdigit1.1.6 检查字符是否是可打印字符(不含空格)isgraph1.1.7 检查字符是否是可打印字符(含空格)is

中文字符编码之GBK,UTF-16和UTF-8

编程中经常会遇到这三种字符编码形式的相互转换问题,以至于许多第三方的库不明原因的调用失败,其实很多都是由于第三方库支持的是utf-8而不是windows默认支持的utf-16导致的。 下面介绍一下windows系统下常见的这三种字符编码方式。 GB2312 是我们国家自己国标的汉字编码字符集,该字符集以一个16位的2进制数据单元表示一个汉字,所以能够将两个char型数据单元保存一个汉字。

任意数字、字符序列,输出它们所有的排列组合

/*** @author Bo年在无木小白*/public class Combination {/*** 任意数字序列“123456”之类,输出它们所有的排列组合*/public static void main(String[] args) {String str = "xafdvs";char[] arr1 = str.toCharArray();char[] arr2 = Arrays.

C++代码片段01 - 字符串中查找是否有某个字符

<span style="font-size:18px;">if( third_name.find('*')!=string::npos || third_name.find('@')!=string::npos ){printf("third_name[%s] is a email or a mobilenum", third_name.c_str());return -1;}</s

【网络安全的神秘世界】关于Linux中一些好玩的字符游戏

🌝博客主页:泥菩萨 💖专栏:Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 佛祖保佑 把 motd 通过xtp拖到Linux中 liyang@Ubuntu2204:~$ cp motd /etc/motd #一定要放在etc下liyang@Ubuntu2204:~$ exit #退出,重新登录