科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道解析:怎样使其他用户能够发出全文查询

解析:怎样使其他用户能够发出全文查询

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本示例说明怎样使用 SQL Server 服务管理器使其他用户得以对 writers 表和 books 表发出全文查询。writers 表和 books 表是位于 pubs 数据库中的虚构的表。

作者:赛迪网 limeinan 来源:天新网 2008年3月27日

关键字: Mssql SQL SQL Server 数据库

  • 评论
  • 分享微博
  • 分享邮件

7.为这些表创建全文索引,方法是对每个表分别执行一次下列存储过程:

sp_fulltext_table  'writers',  'activate'
sp_fulltext_table  'books',  'activate'

这样做实际上并不创建全文索引,而是在全文目录中注册这些表,使来自这些表的数据将被包含在下一次填充中。

8.启动对 PubsCatalog 全文目录的完全填充,方法是执行下列存储过程:

sp_fulltext_catalog  'PubsCatalog',  'start_full'

因为全文目录的填充是一种异步操作,所以不大可能立即创建出全文索引。

9.执行下列语句以验证 PubsCatalog 全文目录填充的进度:

SELECT FulltextCatalogProperty ( 'PubsCatalog',  'PopulateStatus')

如果全文目录的服务空闲并因此完成填充,则返回 0;否则返回 1 或更大的值以表示填充阶段。

10.发出 Transact-SQL 查询以确认管理任务执行无误。例如:

SELECT B.writer_name, B.pub_date, B.the_words, A.royalties_ytd
FROM writers A,  books B
WHERE A.writer_name = B.writer_name
AND A.citizenship = 'Canadian'
AND CONTAINS (B.the_words, '"Indexing Service" NEAR "Indexing Service"')

SELECT writer_name, pub_date, abstract
FROM books  
WHERE CONTAINS (title, '"Classic" NEAR "French" NEAR "Cooking"')

最后一条查询结果是错误的,因为没有为全文查询启用 title 列。

11.执行下列语句以检查错误:

SELECT ColumnProperty 
( ObjectId('books'), 'title',  'IsFullTextIndexed' )

12.通过执行下列存储过程,列出参与对 books 表进行全文处理的列:

sp_help_fulltext_columns  'books'

说明:此次查询的结果显示存在一个错误,并且 writer_name 列而非 title 列包含在全文索引的定义中。

13.停用 books 表以便将 title 列添加到全文索引,同时将 writer_name 列删除,方法是执行下列存储过程:

sp_fulltext_table  'books',  'deactivate'

除了允许添加和删除列外还停用 books 表,这意味着该表不再参与 PubsCatalog 全文目录的填充。但将保留元数据,并且可重新激活该表。books 表的现有全文索引将一直保留到下一次对 PubsCatalog 全文目录进行完全填充,但在此期间并不使用,因为 Microsoft® SQL Server™ 2000 禁止对已停用的表进行查询。

14.在 books 表的全文索引的元数据中添加 title 列和删除 writer_name 列。对每个列执行一次下列存储过程:

sp_fulltext_column  'books',  'writer_name',  'drop'   
sp_fulltext_column  'books',  'title',  'add'
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章