全文索引的SQL查询关键字

1. CONTAINS 

搜索单个词和短语的精确或模糊的匹配项,要搜索的内容必须是个有意义的词语,比如说“苹果”、“建设厅”,不能是一些没意义的词语,比如“阿迪撒啊是”,“儿儿的”这样的词语即使

LIKE是能查询出来,但全文索引对这样没意义的词语可能没有建立索引,查不出来

[sql] view plaincopy

1. SELECT *   

2. FROM dbo.Business  

3. WHERE CONTAINS(Address,'旅游')  

实现功能:查询Business表中Address列包含“旅游”的行


详细查看:http://msdn.microsoft.com/zh-cn/library/ms187787.aspx

2. FREETEXT

和CONTAINS类似,不同的是它会先把要查询的词语先进性分词然后在查询匹配项

[sql] view plaincopy

1. 01.select *    

2. 02.from dbo.Business     

3. 03.where freetext(Address,'带婴儿旅游')  

详细查看:http://msdn.microsoft.com/zh-cn/library/ms176078.aspx

.CONTAINSTABLE

在 查询方式上与 CONTAINS 几乎一样。但CONTAINSTABLE 返回的是符合查询条件的表,在 SQL 语句中我们可以把它当作一个普通的表来使用,并且使用 CONTAINSTABLE 的查询对每一行返回一个相关性排名值 (RANK) 和全文键 (KEY)。

[sql] view plaincopy

1. SELECT  *  

2. FROM    Business AS FT_TBL  

3.         INNER JOIN CONTAINSTABLE(Business, *, 'ISABOUT (婴儿 WEIGHT (.8),赤水 WEIGHT (.4) )')  

4.         AS KEY_TBL ON FT_TBL.BusinessId = KEY_TBL.[KEY]  

5. ORDER BY KEY_TBL.RANK DESC  

ISABOUT 是这种查询的关键字,weight 指定了一个介于 0~1之间的数,类似系数。表示不同条件有不同的侧重。

CONTAINSTABLE 返回的表包含有特殊的两列:KEY,RANK。

被全文索引的表必须有唯一索引。这个唯一的索引列在返回的表中就成为 KEY。我们通常把它作为表连接的条件。

在某些网站搜索时,结果中会出现表示匹配程度的数字,RANK 与此类似。它的值在0~1000之间,标识每一行与查询条件的匹配程度,程度越高,RANK 的值大,通常情况下,按照 RANK 的降序排列。

 详细查看:http://msdn.microsoft.com/zh-cn/library/ms189760.aspx

4. FREETEXTTABLE

在 查询方式上与 FREETEXT 几乎一样。但 FREETEXTTABLE 返回的是符合查询条件的表,在 SQL 语句中我们可以把它当作一个普通的表来使用,并且使用  FREETEXT  的查询对每一行返回一个相关性排名值 (RANK) 和全文键 (KEY)。

[sql] view plaincopy

1. SELECT  * ,  

2.         BusinessID ,  

3.         Address  

4. FROM    Business AS FT_TBL  

5.         INNER JOIN FREETEXTTABLE(Business, Address, 'ISABOUT (带婴儿旅游 WEIGHT (.8),赤水 WEIGHT (.4) )')  

6.         AS KEY_TBL ON FT_TBL.BusinessId = KEY_TBL.[KEY]  

7. ORDER BY KEY_TBL.RANK DESC  

详细查看:http://msdn.microsoft.com/zh-cn/library/ms177652.aspx

 

你可能感兴趣的:(SQL,SERVER)