Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SQLServer2008全文搜索中忽略html标记_Html_Sql Server_Sql Server 2008 - Fatal编程技术网

如何在SQLServer2008全文搜索中忽略html标记

如何在SQLServer2008全文搜索中忽略html标记,html,sql-server,sql-server-2008,Html,Sql Server,Sql Server 2008,我正在使用SQLServer2008全文搜索引擎进行一个知识库项目。 项目包含在文章和文件中,其中每篇文章都有多个文件。在这些文章中,全部内容都是纯html 现在,我成功地在SQLServer2008上创建了全文目录和索引,并且我的数据库与版本10兼容 以下是我的问题: 1) 在这些文章中搜索时,是否可以忽略html标记(更清楚地说是包含在“”中的文本),因为如果我希望搜索div、table等,应该不会返回结果 2) 文章将随时更新,因此插入新记录时必须更新全文索引。在创建全文目录时仅设置“自动

我正在使用SQLServer2008全文搜索引擎进行一个知识库项目。 项目包含在文章和文件中,其中每篇文章都有多个文件。在这些文章中,全部内容都是纯html

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

以下是我的问题:

1) 在这些文章中搜索时,是否可以忽略html标记(更清楚地说是包含在“”中的文本),因为如果我希望搜索div、table等,应该不会返回结果

2) 文章将随时更新,因此插入新记录时必须更新全文索引。在创建全文目录时仅设置“自动跟踪更改”是否足够

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


关于这些,请检查:

1) 在SQL Server全文中,我们可以定义干扰词/停止词。可以编辑“噪波世界”文件,然后必须重建目录。因此,您可以将所有html标记作为噪声。请查收

2) 随着轨道的变化,它会自动包括当前全文搜索中的变化,但这些新添加的文章的排名会从上一篇文章中改变。所以,除非你的主索引同步,否则它将放弃排名

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

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


有一个.htm和.html文件的过滤器

要查看是否已安装筛选器,请运行以下sql:

SELECT * FROM sys.fulltext_document_types
SELECT display_term, column_id, document_count
FROM sys.dm_fts_index_keywords
(DB_ID('your_db'), OBJECT_ID('your_table')) 
你应该看到:

.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 * FROM sys.fulltext_document_types
SELECT display_term, column_id, document_count
FROM sys.dm_fts_index_keywords
(DB_ID('your_db'), OBJECT_ID('your_table')) 

Stopwords不应该过滤html标记。如果有一个文本像“我将给出什么作为Stopwords来过滤它,像“表单”、“等等?”我想你应该忽略基本的html标记。对于这种情况,我建议通过实现IWordBreaker来实现自定义分词器和词干分析器,iSoftmer和IFilter接口(如果需要),然后插入您的sql server。您能给出一个实现您提到的这些接口的示例吗?您可以在IWordBreaker上找到有关这些接口的信息:IFilter:iSoftmer:IWordBreaker的示例实现:向sql server注册:希望这些帮助。响应被否决:请参阅DC的答案,这是正确的方法Hi friend,我认为最好的解决方案是用sql clr程序集替换html,使用regex“”检查此链接我似乎无法在varbinary(max)列上添加全文索引。我也不知道如何指定文档类型(如果我改为将其设置为text),SQL Management Studio似乎有点受限。全文索引可以创建为一个普通的SQL语句,而计算列在这个过程中非常有用;参见此处接受答案的第2点: