gpt4 book ai didi

sql-server - 全文未索引 varbinary 列(使用 html)

转载 作者:行者123 更新时间:2023-12-04 01:55:38 25 4
gpt4 key购买 nike

我有一个包含 HTML 数据的表格,我想通过 html 过滤器使用全文索引进行搜索

所以我创建了一个索引:

CREATE FULLTEXT CATALOG myCatalog AS DEFAULT

CREATE FULLTEXT INDEX ON myTable (Body TYPE COLUMN Filetype)
KEY INDEX PK_myTable
Bodyvarbinary(max)带有 HTML 的列。 Filetype列是计算列返回 .html .

没有返回任何结果。

我验证了 .html过滤器已安装。如果我将列转换为 nvarchar,全文索引也已正确安装并且工作正常并只创建一个“纯文本”索引(不是 html)。

SQL 日志或 FTS 日志中没有错误。

关键字表是空的!
SELECT *
FROM sys.dm_fts_index_keywords
(DB_ID('myDatabase'), OBJECT_ID('myTable'))

它返回的只是“END OF FILE”符号。

enter image description here

它说“文档计数 35”,这意味着文档已被处理,但未提取任何关键字。

附注。我有 SQL Server express 2012 版(具有包括全文在内的所有高级功能)。这可能是原因吗?但同样,“纯”全文搜索工作得很好!

聚苯乙烯。让我的同事在 SQL Express 2016 上对此进行测试 - 结果相同......在我们的生产服务器“企业”版上尝试过 - 相同。

更新

好吧,事实证明全文索引不支持 UNICODE!!在 varbinary 列中。当我将列转换为非 unicode(通过将其转换为 nvarchar 然后转换为 varchar 然后返回到 varbinary )它开始工作。

任何人都知道任何解决方法?

最佳答案

好的,事实证明全文索引确实支持 varbinary 中的 unicode 数据但要注意这一点:

如果您的 varbinary列是从 Nvarchar 创建的一定要包括 0xFFFE开头的unicode签名

例如,我将计算列用于全文索引,因此我不得不将计算列更改为:

alter table myTable
add FTS_Body as 0xFFFE + (CAST(HtmlBody as VARBINARY(MAX)))
--HtmlBody is my nvarchar column that contains html

关于sql-server - 全文未索引 varbinary 列(使用 html),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51555538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com