如何在Sql Server 2008全文搜索中忽略html标记

时间:2010-01-12 09:21:54

标签: html sql-server sql-server-2008

我正在使用SQL Server 2008全文搜索引擎开发知识库项目。 项目包含在文章和文件中,每篇文章都有多个文件。在这些文章中,整个内容是纯HTML

现在,我在SQL Server 2008上成功创建了全文目录和索引,我的数据库与版本10兼容。

以下是我的问题:

1)在这些文章中搜索时,是否可以忽略html标签,更清楚地包含“< ...>”中包含的文本,因为如果我想搜索div,table等,则应该没有结果回来了?

2)文章将随时更新,因此在插入新记录时必须更新全文索引。在创建全文目录时是否足以仅设置“TRACK CHANGES AUTOMATIC”?

3)以后我们可能会使用FILESTREAM功能,SQL Server 2008在使用全文索引的文件上有很好的表现吗? SQL Server 2008在索引方面有哪些特定的文档类型?

此致

2 个答案:

答案 0 :(得分:27)

有.htm和.html文件的过滤器。

看看你是否安装了过滤器运行这个sql:

SELECT * FROM sys.fulltext_document_types
你应该看到:

.htm E0CA5340-4534-11CF-B952-00AA0051FE20 C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn\nlhtml.dll 12.0.6828.0 Microsoft Corporation

.html E0CA5340-4534-11CF-B952-00AA0051FE20 C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn\nlhtml.dll 12.0.6828.0 Microsoft Corporation

因此,如果您可以将您的文章列转换为varbinary(max),那么您可以在其上添加全文索引并指定文档类型'.html'

填充索引后,您可以使用此sql验证关键字:

SELECT display_term, column_id, document_count
FROM sys.dm_fts_index_keywords
(DB_ID('your_db'), OBJECT_ID('your_table')) 

答案 1 :(得分:-1)

请检查以下内容:

1)在SQL Server全文中,我们可以定义干扰词/停用词。您可以编辑Noise world文件,然后必须重建目录。所以你可以把所有的html标签都作为噪音。请检查

http://msdn.microsoft.com/en-us/library/ms142551.aspx

2)通过跟踪更改,它会自动包含当前全文搜索中的更改,但这些新添加的文章的排名会从之前更改。因此,除非你掌握索引同步,否则它会放弃和排名。

3)据我所知,我们可以实现自定义过滤器,词干分析器和断字器,并且可以插入SQL Server全文搜索。默认情况下我可能不知道完整列表,但它确实是doc和pdf。

有关SQL Server全文搜索2008的详细信息,请查看:

http://technet.microsoft.com/en-us/library/cc721269.aspx