2010-01-12 71 views
8

我正在使用SQL Server 2008全文搜索引擎开发知识库项目。 项目包含在文章和文件中,每篇文章有多个文件。在这些文章中,整个内容是pure html如何忽略Sql Server 2008中的html标记全文搜索

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

这里是我的问题:

1)是否有可能忽略HTML标签,包含“< ...>”更清晰的文本,而在这些文章搜索,因为如果我想搜索的div ,表等应该没有结果返回?

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

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

问候

+0

喜的朋友,我认为最好的办法是用正则表达式‘<(.|\n)*?>’与SQL CLR程序集检查,以取代HTML此链接http://justgeeks.blogspot.com/2008/08/adding-regular-expressions-regex-to-sql.html – 2010-12-12 22:24:02

回答

-1

请检查这些:

1)在SQL Server全文,我们可以定义干扰词/停用词。您可以编辑噪音世界文件,然后您必须重建目录。所以你可以把所有的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

+1

停用词不应过滤html标签。如果有像“

“我将以什么形式过滤它,如”form“,”“等? – Myra 2010-01-12 13:37:34

+0

我以为你想忽略基本的html标签。对于这种情况,我希望推荐通过实现IWordBreaker,IStemmer以及IFilter接口(如果需要)来实现Custom Word Breaker和Stemmer,然后插入到您的SQL Server中。 – 2010-01-12 14:51:03

+0

你会举一个实现你提到的这些接口的例子吗? – Myra 2010-01-13 08:47:20

26

有对的.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(最大值),然后您可以在其上添加全文索引并指定文档类型'。HTML”

一旦该指数已填充,您可以使用此SQL验证关键字:

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

你的第一个赞成从我:) – Myra 2010-06-18 06:52:34

+0

我似乎无法在varbinary(最大)列上添加全文索引。我也不知道如何指定文档类型(如果我将其设置为文本) – Radderz 2017-12-01 13:58:39

+0

似乎SQL Management Studio有点受限制。全文索引可以创建为纯SQL语句,而计算列在此过程中非常有用;请参阅接受答案的第2点:https://stackoverflow.com/questions/17179772/getting-top-n-latest-entries-from-sql-server-full-text-index – Radderz 2017-12-01 14:18:13