風雲論壇后台开发 → 浏览:帖子主题
* 帖子主题:利用SQL Server的全文检索功能实现中文分词
風雲 (ID: 3)
头衔:论坛版主
等级:大天使
积分:1567
发帖:70
来自:保密
注册:2022/3/30 15:28:53
造访:2024/11/22 10:43:44
[ 第 1 楼 ] 回复
select * from sys.dm_fts_parser('利用SQL Server的全文检索功能实现中文分词', 2052, null, 0)

注意:调用全文检索函数需要安装全文检索功能。

---

CONTAINS语句的功能是在表的所有列或指定列中搜索:一个字或短语;一个字或短语的前缀;与一个字相近的另一个字;一个字的派生字;一个重复出现的字。
CONTAINS语句的语法格式为: CONTAINS({column | *}), <contains_search _condition>) 其中,column是搜索列,使用“*”时说明对表中所有全文索引列进行搜索。Contains_search_ condition 说明CONTAINS语句的搜索内容,其语法格式为: {<simple_term>|<prefix_term>|<proximity_term>|<generation_term>|<weighted_term>}[{undefined{AND|AND NOT|OR}<contains_search_condition>}] [...n]

下面就simple_term和prefix_term参数做简要说明:
simple_term是CONTAINS语句所搜索的单字或短语,当搜索的是一个短语时,必须使用双引号作为定界符。其格式为: {‘word’|“ phrase”} prefix_term说明CONTAINS语句所搜索的字或短语前缀,其格式为: {“word*” | “phrase*”} 例如,下面语句检索Book表的Title列和Notes列中包含“database”或“computer”字符串的图书名称及其注释信息:
select title, notes from book where contains(tilte, ‘database’) or contains(notes,‘database’) or contains(title,‘computer’) or contains(notes,‘computer’)
FREETEXT语句的功能是在一个表的所有列或指定列中搜索一个自由文本格式的字符串,并返回与该字符串匹配的数据行。所以,FREETEXT语句所执行的功能又称做自由式全文查询。
FREETEXT语句的语法格式为:FREETEXT({column | * },‘freetext_string’) 其中,column是被搜索列,使用“*”时说明对表中的所有全文索引列进行搜索。Freetext_string参数指出所搜索的自由文本格式字符串。 例如,下面语句使用FREETEXT语句搜索Book表中包含“Successful Life”字符串的数据行:
select title, notes from book where freetext(*,‘Successful Life’)
2022/4/15 7:49:45 IP:已设置保密
風雲 (ID: 3)
头衔:论坛版主
等级:大天使
积分:1567
发帖:70
来自:保密
注册:2022/3/30 15:28:53
造访:2024/11/22 10:43:44
[ 第 2 楼 ] 回复
SQL Server的全文索引函数(freetext 和contains)可以让你的网站实现类似百度的搜索功能。具体用法是:
where freetext(colname, "关键字或短语")
where contains(colname, "关键字或短语")
2022/4/15 7:54:21 IP:已设置保密
風雲 (ID: 3)
头衔:论坛版主
等级:大天使
积分:1567
发帖:70
来自:保密
注册:2022/3/30 15:28:53
造访:2024/11/22 10:43:44
[ 第 3 楼 ] 回复
contains相对freetext简单,占用服务器资源较少,如果数据库较大的情况下,contains速度较快。
另外,使用contains时,输出的结果比freetext精确,可以理解为前者是精确搜索,后者是语义匹配搜索。freetext在使用时服务器会对关键词进行分析加工,然后对输出结果进行加工,所以占用的服务器系统资源比contains大。
2022/4/15 9:59:28 IP:已设置保密
分页: 1, 共 1 页
快速回复主题
账号/密码
用户: 没有注册? 密码:
评论内容