位置: 编程技术 - 正文

SQLServer 全文检索(full-text)语法(sqlserver全文索引)

编辑:rootadmin
sql server 全文检索有两种搜索方式,一种是contains,另一种是freetext。前者是包含,类似于 like '%关键词%',后者则是将一段文字分词以后对每个词进行搜索。 具体语法: contains: SELECT 字段1,字段2 FROM 表名 WHERE contains(字段,'"词一" or "词二"') 根据查找结果的相似度排序 SELECT 字段1,字段2 FROM 表名 inner join containstable(表名, 字段,'"词一" or "词二"',) as k on 表名.id = k.[key] order by k.RANK DESC freetext: SELECT 字段1,字段2 FROM 表名 WHERE freetext(字段,'词一词二') 根据查找结果的相似度排序 SELECT 字段1,字段2 FROM 表名 inner join freetexttable(表名, 字段,'词一词二',) as k on 表名.id = k.[key] order by k.RANK DESC 上文中freetexttable或containstable的表示取条数据

最近搜索了一下全文检索,发现了一些问题,现在总结如下:全文索引和查询概念(摘自SQL 联机帮助)全文索引、查询和同步化最主要的设计要求是,在注册进行全文检索的所有表上都有一个唯一的全文键列(或者单列主键)。全文索引对使用的重要字及其所在位置进行跟踪。例如,假定有一个对 DevTools 表的全文索引。全文索引可能指出在 Abstract 列的第 个和第 个单词处找到了单词 Microsoft,所在的行与 ProductID 6 关联。该索引结构支持对所有包含被索引单词的项进行有效检索,以及高级检索操作,如短语检索和邻近检索。为防止全文索引因包含很多对检索没有帮助的词而变得臃肿,a、and、is 或 the 这类额外的词都忽略不计。例如,指定"the products ordered during these summer months"与指定"products ordered during summer months"是一样的。有这两个字符串的行都会被返回。目录 MssqlFtdataSqlserverConfig 下提供了多种语言的干扰词列表。在安装带有全文检索支持的 Microsoft® SQL Server&#; 时会创建这个目录,并同时安装干扰词文件。干扰词文件可以编辑。例如,高技术公司的系统管理员可以把单词 computer 添加到他们的干扰词表中去。(如果编辑干扰词文件,则必须在更改生效之前重新填充全文目录。)下表显示了干扰词文件及其相应的语言。干扰词文件 语言 -------------- ---------Noise.chs 简体中文 Noise.cht 繁体中文 Noise.dat 语言中性 Noise.deu 德语 Noise.eng 英语(英国) Noise.enu 英语(美国) Noise.esn 西班牙语 Noise.fra 法语 Noise.ita 意大利语 Noise.jpn 日语 Noise.kor 韩文 Noise.nld 荷兰语 Noise.sve 瑞典语 在处理全文查询时,检索引擎将满足检条件的行的键值返回给 Microsoft SQL Server。比如有一个 SciFi 表,其中 Book_No 列是主键列。Book_No Writer Title -------- ----------- --------------------------A Asimov Foundation's Edge A Asimov Foundation and Empire C Clarke Childhood's End V Verne Mysterious Island 假定想使用一个全文检索查询来查找包含单词 Foundation 的书名。在本例中,将从全文索引获得值 A 和 A。然后 SQL Server 用这些键值和其它栏的信息响应该查询。下表显示了存储全文索引数据所使用的语言。这些语言基于 SQL Server 安装期间选择的 Unicode 排序规则区域设置标识符。Unicode 排序规则区域设置标识符 全文数据存储所用的语言 ------------------------------- -----------------------中文注音符号(台湾) 繁体中文 汉语拼音 简体中文 中文笔画 简体中文 中文笔画(台湾) 繁体中文 荷兰语 荷兰语 英语(英国) 英语(英国) 法语 法语 通用 Unicode 英语(美国) 德语 德语 德文电话簿 德语 意大利语 意大利语 日语 日语 日语 Unicode 日语 韩文 韩文 韩文 Unicode 韩文 西班牙语(现代) 西班牙语 瑞典/芬兰语 瑞典语 此列表中没有的其它所有 Unicode 排序规则区域设置标识符值都映射到使用空格分隔单词的中性语言单词的断字符和词干分隔符。说明 Unicode 排序规则区域设置标识符设置用于所有可进行全文索引的数据类型(如 char、nchar 等)。如果为 char、varchar 或 text 类型列的排序次序设置的语言类型,不是 Unicode 排序规则区域设置标识符语言,那么在对 char、varchar 和 text 类型的列进行全文索引和查询时,仍然使用 Unicode 排序规则区域设置标识符值。创建全文索引(以索引image列为例,其他类型字段大致一样)标题 全文索引image列,全攻略!作者 pengdali [原作] 关键字 全文索引 image 今天“百年不遇”的停电了,看了一天书。晚上搞了一下全文索引,决定把心得贴出来,我尽量写的详细,大家共同学习,欢迎指正!1、启动 Microsoft Search 服务 开始菜单-->SQL程序组-->服务管理器-->下拉筐-->Microsoft Search 服务-->启动它2、 ..Microsoft SQL ServerMSSQLFTDATASQLServerConfig目录里建一个非空noise.chs文件 非空noise.chs文件,也有人说是空的noise.chs文件,但我每次都往里写几个没用的字母。3、建立环境 打开查询分析器-->执行下列脚本:--------------------------------------------create database test ---创建test数据库use test ---选择test数据库create table dali (ID int not null primary key,MyImage image,FileType varchar(),FileNmae varchar()) ---创建dali表--dali表中 Id,MyImage,FileType 三列是必须的,因为要对image列索引的话,必须要有一个主键列,一个image列,一个存放文件类型的列--我们知道在windows系统中文件类型是靠扩展名来区分的所以FileType列也就是用来放 文件的扩展名--------------------------------------------sp_fulltext_database 'enable' --为全文索引启用数据库sp_fulltext_catalog 'My_FullDir', 'create' ---创建一个叫My_FullDif的全文目录declare @Key sysname ; select @Key=c.name from syscolumns a,sysconstraints b,sysobjects c where a.id=object_id('dali') and a.name='ID' and a.id=b.id and b.constid=c.id and c.name like 'PK%'exec sp_fulltext_table 'dali','create','My_FullDir',@Key ----这两句是为全文索引,对表进行标记sp_fulltext_column 'dali','MyImage','add',0x,'FileType' ---这句是指定MyImage列为全文索引列,FileType是类型列------------------------------------------------4、在c盘下放一个扩展名为doc的word文件,一个扩展名为xls的excel文件,一个扩展名为htm的网页文件,个扩展名为bmp的图片 共4个,大家可根据实际情况放入!5、插入数据 建立下面这个存储过程--------------------------------------------------CREATE PROCEDURE sp_textcopy @srvname varchar (), @login varchar (), @password varchar (), @dbname varchar (), @tbname varchar (), @colname varchar (), @filename varchar (), @whereclause varchar (), @direction char(1) AS /* 这是使用textcopy工具将文件插入到数据库中,如果有前台工具可以用前台开发工具将文件插入,这里为了演示 */DECLARE @exec_str varchar () SELECT @exec_str='textcopy /S '+@srvname+' /U '+@login+' /P '+@password+' /D '+@dbname+' /T'+@tbname+' /C '+@colname+' /W"'+@whereclause+'" /F"'+@filename+'" /'+@directionEXEC master..xp_cmdshell @exec_str----------------------------------------------------insert dali values(1,0x,'doc','大力的doc') ---其中第二列是 0x 它是一个进制数对应image列,是必须的,不要写null,第三列是文件类型,既扩展名sp_textcopy '你的服务器名','sa','你的密码','test','dali','MyImage','c:大力的doc.doc','where ID=1','I'-------依次参数是:实例名,用户名,密码,数据库名,表名,image列名,路径及文件名,条件(你必须保证它只选择一行),I---------------------------------------------------------------------------------------------------------------------insert dali values(2,0x,'bmp','图片')sp_textcopy '你的服务器名','sa','你的密码','test','dali','MyImage','c:图片.bmp','where ID=2','I' --注意条件是 ID=2insert dali values(3,0x,'xls','Excel文件')sp_textcopy '你的服务器名','sa','你的密码','test','dali','MyImage','c:Excel文件.xls','where ID=3','I' --注意条件是 ID=3insert dali values(4,0x,'htm','网页')sp_textcopy '你的服务器名','sa','你的密码','test','dali','MyImage','c:网页.htm','where ID=4','I' --注意条件是 ID=4----------上面的语句,要保证类型一样,路径正确,条件唯一正确应该就可以了6、填充全文索引sp_fulltext_table 'dali','start_full' ---第一个参数是表名,第二个参数是启动表的全文索引的完全填充7、可以开始你的实验了select * from dali where contains(MyImage,'J老师')select * from dali where contains(MyImage,'海老师')------END------------调试环境:SQLServer企业版、Windows高级服务器全文索引中的几个问题:1.搜索时出现错误: 服务器: 消息 ,级别 ,状态 1,行 2 查询子句只包含被忽略的词 这种情况修改 MssqlFtdataSqlserverConfig 下对应语言的干扰词列表文件2.修改了干扰词文件,查询中文时仍然出现上述问题 a.首先检查你的SQL有没有安装最新的补丁,检查的方法是在查询分析器中运行: select @@version 如果出来的版本号是8..以下,则表明你未安装sp3的补丁,要装上. SQL补丁下载: 注意下载后,执行的时候是解压,要在解压后的目录中执行setup.bat才是真正的安装 b.配置全文索引时,单词断字符选择"中文(中国)" c.Noise.chs文件中至少有一个单词,例如:? d.如果在全文检索时,你能正常修改干扰词文件,说明你的全文检索没有使用上这个文件 如果你配置的全文检索应该要用到这个文件,那就在 企业管理器--展开你的数据库--右键全文目录--重建全部全文目录3.表中的数据改变后,检索不到 方法1. 右键你的表--全文索引表--启用增量填充 方法2. 右键你的表--全文索引表--更改跟踪,这样以后的修改会自动填充(有一定延迟)4.sql才支持对image列的全文检索

推荐整理分享SQLServer 全文检索(full-text)语法(sqlserver全文索引),希望有所帮助,仅作参考,欢迎阅读内容。

SQLServer 全文检索(full-text)语法(sqlserver全文索引)

文章相关热门搜索词:sqlserver全文检索,sql全文检索,sqlserver 全文检索索引,sqlserver全文索引,sqlserver全文检索,sqlserver全文检索,sqlserver全文检索慢,sqlserver全文检索,内容如对您有帮助,希望把文章链接给更多的朋友!

SQL建立数据库及删除数据库命令 CREATEDATABASE临时的ON(NAME='临时的_Data',FILENAME='h:临时的.mdf',SIZE=5MB,MAXSIZE=MB,FILEGROWTH=%)LOGON(NAME='临时的_LOG',FILENAME='h:临时的.ldf',SIZE=2MB,MAXSIZE=5MB,FILEGROWTH=

解决SQL Server的“此数据库没有有效所有者”问题 在附加数据库后查看不了数据库关系图,也无法建立数据库关系图我的解决方法如下:1、设置兼容级别为(为)(为)USE[master]GOEXECdbo.sp_dbcmp

sqlserver not in 语句使程充崩溃 两张表组织架构表(Organise)和工资发放历史记录表(WagePerMonthHis)两张表通过Organise.Item_id和WagePerMonthHis.OrgIdS进行关联Organise表(以下简称O表)中大约有

标签: sqlserver全文索引

本文链接地址:https://www.jiuchutong.com/biancheng/348811.html 转载请保留说明!

上一篇:sqlserver isnull在数据库查询中的应用

下一篇:SQL建立数据库及删除数据库命令(sql数据库建立步骤)

  • 海南增值税发票图片
  • 每年税务师考试几次
  • 折扣折让属于什么科目
  • 收到发票未付款怎么处理
  • 什么是资金账簿印花税
  • 房屋出租需要缴纳个人所得税吗
  • 怎么设置存货科目
  • 坏账准备的账务处理怎么理解
  • 剩余折旧月份
  • 工会经费按什么计算的
  • 事业单位结转结余科目
  • 存货质押贷款风险
  • 法人收到票据用什么抵扣
  • 产品在海关发生质量问题
  • 税务部门如何核定税额
  • 增值税发票开具红字发票后上月税款怎么交?
  • 超市积分礼品
  • 收据大写要写整吗
  • 建安类增值税专用发票什么时候改的
  • 企业的其他业务是什么
  • 暂估入库会影响利润吗
  • 调整以前年度损益调整汇算清缴
  • 增值税的特殊销售方式有哪些?税务处理时怎样的?
  • 企业所得税汇算清缴扣除比例
  • 偶然所得是什么科目
  • 小企业会计准则下融资租入固定资产的核算
  • 使用360安全卫士
  • 公司从超市购买东西缴纳印花税吗
  • 建筑工程简易计税可以抵扣吗
  • shine.exe - shine是什么进程 有什么用
  • 1050ti 4g显卡
  • 培养自己的php编程能力
  • Yii使用技巧大汇总
  • 会计科目的设置应该符合国家统一会计准则的规定
  • 银行进账单是银行开吗
  • 关于灵活就业人员待遇享受政策
  • 批发企业商品盘点发生短缺时
  • mac apache php
  • 什么是技术服务工程师
  • 增值税申报表33栏显示有欠缴税额
  • 帝国cms破解授权
  • 给离职员工买社保的风险
  • 公司用车租赁
  • 零申报未申报可以不处罚吗
  • 培训费其他费用的列支范围
  • 安装sql server 2008提示重新启动计算机
  • 代垫费用开什么发票
  • 公司房租发票是法人名字能入账吗安全吗
  • 计提医疗保险费的会计分录
  • 原材料用于在建工程要进项转出吗
  • 公允价值变动损益在利润表哪里
  • 股权转让溢价部分会计分录
  • 减免的增值税要交所得税吗
  • 村料采购会计科目有哪些
  • 企业盘亏的设备会计分录
  • 分期收款销售什么意思
  • 食品发票可以报销吗怎么报销
  • 小规模免征增值税的有哪些
  • 企业的职工福利费
  • 住宿费开的增值税专用发票怎么记账
  • 施工赔偿款怎么记账
  • 进项税大于销项税需要交增值税吗
  • 税务人员如何做好本职工作
  • sql查询一条数据
  • 使用灭火器人要站在上风口还是下风口
  • Windows Vista和Windows 7对比
  • win10的用户
  • window8设置在哪里
  • win7打不开任务栏
  • 景深图片的3d显示器
  • 用正则表达式替换掉两汉字间的括号
  • 噩梦原版
  • 简述linux与windows相比,有哪些优势
  • jquery使用css
  • jquery设置内容
  • android 监听事件
  • python中的stringvar
  • 企业登录密码是几位数
  • 河北公示信息网
  • 新车购置税是在4s店交吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设