全文本检索的应用(3)

CONTAINSTABLE 语法
我们通常在 FROM 子句中使用 CONTAINSTABLE ,就象这样:SELECT * FROM table_name,CONTAINTABLE(fulltext_table,fullText_column,'search condition') WHERE ......。

CONTAINSTABLE 在查询方式上与 CONTAINS 几乎一样,所以就不用赘述了。CONTAINSTABLE 返回的是符合查询条件的表,在 SQL 语句中我们可以把它当作一个普通的表来使用。

我们看一个例子,比较这两种表的不同。
SELECT FT_TBL.student_name,FT_TBL.student_score,KEY_TBL.RANK
FROM report AS FT_TBL INNER JOIN
     CONTAINSTABLE( student,address,
     'ISABOUT (city weight (.8), county wright (.4))' ) AS KEY_TBL
     ON FT_TBL.student_id = KEY_TBL.[KEY]
ORDER BY KEY_TBL.RANK
CONTAINSTABLE 返回的表包含有特殊的两列:KEY,RANK。
在第一部分里我们就强调了:被全文索引的表必须有唯一索引。这个唯一的索引列在返回的表中就成为 KEY。我们通常把它作为表连接的条件。

在某些网站搜索时,结果中会出现表示匹配程度的数字,RANK 与此类似。它的值在0~1000之间,标识每一行与查询条件的匹配程度,程度越高,RANK 的值大,通常情况下,按照 RANK 的降序排列。
FREETEXT 语法
FREETEXT 与 CONTAINS 类似,只是没有 CONTAINS 的精度高。在 CONTAINS 中,对查询条件的写法有很多要求,而 FREETEXT 就没有,可以是任意的单词,词组或句子。看下面的例子:
SELECT CategoryName
FROM Categories
WHERE FREETEXT (Description, 'sweetest candy bread and dry meat' )

FREETEXTTABLE 语法
和 CONTAINSTABLE 一样,FREETEXTTABLE 返回带有 KEY,RANK 的表。举例说明:
SELECT FT_TBL.CategoryName,
    FT_TBL.Description,
    KEY_TBL.RANK
FROM Categories AS FT_TBL INNER JOIN
    FREETEXTTABLE(Categories, Description,
    'sweetest candy bread and dry meat') AS KEY_TBL
    ON FT_TBL.CategoryID = KEY_TBL.[KEY]
在 ASP 中使用全文本检索
Dim cnn
Dim rs
Dim strSQL

strSQL = "SELECT book_name " &_
         "FROM books " &_
         "WHERE CONTAINS( description, '" & Request("search_condition") & "' )"

Set cnn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.RecordSet")

cnn.Open "provider=sqloledb;datasource=.;initial catalog=books;user id=sa;pasword=;"
rs.Open strSQL,cnn

上面的例子十分简单,仅为示意。只要掌握了 CONTAINS 和 CONTAINSTABLE 的语法,在使用上和一般的 ADO 查询一样。

全文本检索的应用(1)  

全文本检索的应用(2)

时间: 2024-08-20 00:32:36

全文本检索的应用(3)的相关文章

全文本检索的应用(1)

    基本知识1. SQL Server7 的 DeskTop 版中没有全文本检索.2. 一个表只能有一个全文本检索.3. 被检索的表必须有单列的唯一索引.4. 全文本的索引存储在文件系统中,而非数据库中.5. 更新全文本索引的过程比常规索引要耗时,而且也不象常规索引那样可以由数据库系统立即更新.6. 全文本索引包含在全文本目录( Full-Text Catalog )中,每个数据库可以包含一个或多个目录,但一个目录不能属于多个数据库.7. 全文本检索只能在真正的表上创建,不能是视图,系统表,

全文本检索的应用(2)

CONTAINS 语法我们通常在 WHERE 子句中使用 CONTAINS ,就象这样:SELECT * FROM table_name WHERE CONTAINS(fullText_column,'search contents'). 我们通过例子来学习,假设有表 students,其中的 address 是全文本检索的列.1. 查询住址在北京的学生SELECT student_id,student_nameFROM studentsWHERE CONTAINS( address, 'bei

全文本检索的应用(二)

CONTAINS 语法我们通常在 WHERE 子句中使用 CONTAINS ,就象这样:SELECT * FROM table_name WHERE CONTAINS(fullText_column,'search contents').我们通过例子来学习,假设有表 students,其中的 address 是全文本检索的列.1. 查询住址在北京的学生SELECT student_id,student_nameFROM studentsWHERE CONTAINS( address, 'beij

全文本检索的应用(三)

CONTAINSTABLE 语法我们通常在 FROM 子句中使用 CONTAINSTABLE ,就象这样:SELECT * FROM table_name,CONTAINTABLE(fulltext_table,fullText_column,'search condition') WHERE .......CONTAINSTABLE 在查询方式上与 CONTAINS 几乎一样,所以就不用赘述了.CONTAINSTABLE 返回的是符合查询条件的表,在 SQL 语句中我们可以把它当作一个普通的表

全文本检索的应用

基本知识1. SQL Server7 的 DeskTop 版中没有全文本检索.2. 一个表只能有一个全文本检索.3. 被检索的表必须有单列的唯一索引.4. 全文本的索引存储在文件系统中,而非数据库中.5. 更新全文本索引的过程比常规索引要耗时,而且也不象常规索引那样可以由数据库系统立即更新.6. 全文本索引包含在全文本目录( Full-Text Catalog )中,每个数据库可以包含一个或多个目录,但一个目录不能属于多个数据库.7. 全文本检索只能在真正的表上创建,不能是视图,系统表,临时表.

CONTAINS 语法

CONTAINSTABLE 语法我们通常在 FROM 子句中使用 CONTAINSTABLE ,就象这样:SELECT * FROM table_name,CONTAINTABLE(fulltext_table,fullText_column,'search condition') WHERE ....... CONTAINSTABLE 在查询方式上与 CONTAINS 几乎一样,所以就不用赘述了.CONTAINSTABLE 返回的是符合查询条件的表,在 SQL 语句中我们可以把它当作一个普通的

like 和 contains 和match() against()

Like直接在数据据中查找可以查到所有所需记录但是会扫描整个表会影响性能, CONTAINS是基于全文索引 进行查询,查询结果受系统全文索引分词的方法影响查询结果会不全. Select * FROM A Where CONTAINS(B,'"IT"Or"理论"')5257条记录 Select * FROM A Where B Like'%IT%' or B LIKE '%理论%' 5468条记录 结论:需要精确查询用Like如产品搜索,内容搜索可以用CONTAINS

SQL Server 2005你了解多少?

 很多人关心的和担心的都是SQL Server 2005 相对它的前版本SQL Server 2000所做的重大改进或新增功能. 在我升级到SQL2005之后,不得不说的:你也值得拥有.(套用一句广告语,呵呵) 我总结了一下个人认为SQL Server 2005 中最值得你为之升级的10 个理由.无论你是想了解或学习SQL Server 2005,还是正在评估或考虑升级到SQL Server 2005,我相信当时你看完这篇帖子一定会对你的决定起到参考作用. 升级理由一:数据分区 只有到了2005

外行不在只看热闹-揭秘外行人士所不知道的OA

问题描述 原文出自:http://www.winfreeinfo.com/vnews260.html转载请注明出处俗话说,内行看门道外行看热闹,在日新月异信息化行业更是如此,在OA行业格外明显.外行人士(即用户)在选型时,往往是被内行(即系统厂商)牵着鼻子走,OA是个大杂烩,其业务边界没有像其他信息系统那样清晰,且没有标准,不同的企业类型,不同的业务需求.如何满足纷繁变化的管理需求?如何在这种无标准的市场中,用一套标准化的方案解决企业各有不同的业务需求?以上现状是我们在企业走访调研时候都会遇到的