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 = OFF
13 
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 POPULATION
37 
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].[類別] a
78 JOIN CONTAINSTABLE(
79         [dbo].[類別],說明, 'ISABOUT("coffee" weight(0.9),
80                                     "meat" weight(0.8),
81                                     "dog" weight(0.7))',
82                                     10
83     )b
84 ON a.類別ID = b.[KEY]
85 
86 --FREETEXTTABLE搜索
87 SELECT * FROM [dbo].[類別] a
88 JOIN FREETEXTTABLE([dbo].[類別],說明,'dog meat xxxxx') b
89 ON a.類別ID = b.[KEY]
相關文章
相關標籤/搜索