首页 > 代码库 > SqlCollections - 全文索引

SqlCollections - 全文索引

 1 --==============================全文索引=============================== 2 --创建全文目录 3 --要创建全文索引前必须先创建全文目录 4 CREATE FULLTEXT CATALOG TSQL全文目录 5 WITH ACCENT_SENSITIVITY = ON    --是否区分重音 6 AS DEFAULT    --默认目录 7 AUTHORIZATION dbo    --所有者 8  9 --修改全文目录10 ALTER FULLTEXT CATALOG TSQL全文目录11 REBUILD    --重新生成全文目录        12 WITH ACCENT_SENSITIVITY = OFF13 14 --删除全文目录15 DROP FULLTEXT CATALOG TSQL全文目录16 17 --创建全文索引18 --每个表只能有一个全文索引19 --每个全文目录可以有多个全文索引,每个全文索引只能属于一个全文目录20 CREATE FULLTEXT INDEX    --全文索引是没有名字的!21 ON [dbo].[类别](说明)    --ON 表名(字段名)22 KEY INDEX [aaaaa类别_PK]    --必须指定一个现有的唯一索引23 ON TSQL全文目录    --ON 全文目录24 25 --修改全文索引26 ALTER FULLTEXT INDEX 27 ON [dbo].[类别]28 DISABLE    --禁用29 30 --删除全文索引31 DROP FULLTEXT INDEX ON [dbo].[类别]32 33 --填充(更新)全文索引34 ALTER FULLTEXT INDEX 35 ON [dbo].[类别]36 START FULL POPULATION37 38 --CONTAINS搜索39 --单个词搜索40 SELECT * FROM [dbo].[类别]41 WHERE CONTAINS(说明,others)42 43 --多词搜索44 SELECT * FROM [dbo].[类别]45 WHERE CONTAINS(说明,"others" or "meat")    --作为整体字符串传递46 --WHERE CONTAINS(说明,‘others‘ or ‘meat‘) 是错的!47 48 --派生词搜索49 --注意断字符语言必须是英语等有派生词的语言才起作用50 --brought也能搜到了51 SELECT * FROM [dbo].[类别]52 WHERE CONTAINS(说明, FORMSOF(INFLECTIONAL,"bring"))    --注意第2个参数必是字符串    53 54 --前缀词搜索55 --注意只能用*,只能放在字母之后56 SELECT * FROM [dbo].[类别]57 WHERE CONTAINS(说明, "c*")58 59 --加权词搜索60 --加权值介于0和1之间,加权值越高排名越靠前61 --加权值对CONTAINS无效,只对CONTAINSTABLE有效!62 SELECT * FROM [dbo].[类别]63 WHERE CONTAINS(说明, ISABOUT("meat" weight(0.9), 64                             "others" weight(0.6)))65 66 --FREETEXT搜索67 --精度没有CONTAINS高,只要包含任一字或单词都会检索出来68 SELECT * FROM [dbo].[类别]69 WHERE FREETEXT(说明, dog meat xxxxx)70 71 --CONTAINSTABLE搜索72 --KEY表示就是创建全文索引时指定的唯一键73 SELECT * FROM 74 CONTAINSTABLE([dbo].[类别],说明, meat)75 76 --目标:查询说明字段中含有某些词的前10条数据,并按权值排序77 SELECT a.* FROM [dbo].[类别] a78 JOIN CONTAINSTABLE(79         [dbo].[类别],说明, ISABOUT("coffee" weight(0.9),80                                     "meat" weight(0.8),81                                     "dog" weight(0.7)),82                                     1083     )b84 ON a.类别ID = b.[KEY]85 86 --FREETEXTTABLE搜索87 SELECT * FROM [dbo].[类别] a88 JOIN FREETEXTTABLE([dbo].[类别],说明,dog meat xxxxx) b89 ON a.类别ID = b.[KEY]

 

SqlCollections - 全文索引