SQL Server全文索引的个人总结(下)-关于中文分词

本文探讨了SQLServer全文索引在处理中文时采用的按字分词方式及其影响,指出这种方式可能导致索引过大及查询效率降低的问题,并讨论了SQLServer中的简单分词机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SQL Server全文索引的个人总结(下)-关于中文分词

在使用SQL Search的过程中,还发现了一个问题:它对中文,是按字分词的,下面我解释一下:

比如对'博客堂成员很多是MVP'这句话,假如一个个的字的作索引,会比使用'博客堂','成员',MVP'几个词作索引生成的索引大很多,这样不仅浪费空间,也影响索引的效率和准确度。假如英文是按照字母而不是单词作索引,估计世界上如今就没有全文索引,也没有google了。

但是中文在分词上,相比英文有天然的屏障,英文的单词之间有间隔,但是中文不是,必须使用计算机的人工智能把句子分成一个个的词,有些时候,根据句子本身还不够,还必须根据上下文,或者一些日常知识才能判断。比如 乒乓球拍/卖/完了乒乓球/拍卖/完了 ,电脑咋能知道是哪个意思并正确分词呢!

根据使用的结果,SQL Search对中文使用的应该是按字分词(可能是因为原来是英文引擎的缘故),比方说你要查'马克',它会把'马克思'也给你倒腾出来。

我的一个123M的数据库,全文索引有55M,每次全文查询都比较慢(当然机器也很次)。

--------------------------------------------------------------------------------------------------

关于按字分词:

应该还是怡红公子的说法比较妥当,大家看看这个句子:

操作系统能否用汇骗语言改写限制它对每个端口的使用率

为了验证分词,故意使用错误的分词,假如都可以索引出该句子,就说明是按字分词的。比如使用 '用汇' ?查询,也可以查出句子,所以得出了SQLServer按字分词的结论,我没有进一步检查,但是现在发现使用'写限',使用'统能'就无法查出来了,证明SQLServer中还是有简单分词的,只是分词结果不理想。

此外,SQLServer还可以使用第三方的产品增强分词的能力。

--------------------------------------------------------------------------------------------------

假如对分词有兴趣的朋友,这里有一些代码可以看,使用发现分词正确率还是很高的,不过要注册才可以得到:http://www.nlp.org.cn/project/project.php?proj_id=6

发表于 2004年3月19日 11:22 - (阅读:13507;评论:19)

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值