【发布时间】:2019-01-04 10:27:32
【问题描述】:
我有一个包含 HTML 数据的表格,我想通过 html 过滤器使用全文索引进行搜索
所以我创建了一个索引:
CREATE FULLTEXT CATALOG myCatalog AS DEFAULT
CREATE FULLTEXT INDEX ON myTable (Body TYPE COLUMN Filetype)
KEY INDEX PK_myTable
Body 是一个带有 HTML 的 varbinary(max) 列。 Filetype 列是计算列,返回 .html。
没有返回任何结果。
我确认已安装.html 过滤器。如果我将列转换为 nvarchar 并仅创建一个“纯文本”索引(不是 html),全文索引也已正确安装并且 工作正常。
SQL 日志或 FTS 日志中没有错误。
关键字表只是空的!
SELECT *
FROM sys.dm_fts_index_keywords
(DB_ID('myDatabase'), OBJECT_ID('myTable'))
它返回的只是“END OF FILE”符号。
上面写着“document count 35”,表示文档已处理,但没有提取关键字。
附言。我有 SQL Server Express 2012 版(具有所有高级功能,包括全文)。这可能是原因吗?但同样,“纯”全文搜索工作得很好!
PPS。让我的同事在 SQL Express 2016 上对此进行测试 - 结果相同...在我们的生产服务器“企业”版上尝试过 - 相同。
更新
好的,原来全文索引不支持 UNICODE!在 varbinary 列中。当我将该列转换为非 unicode 时(通过将其转换为 nvarchar,然后转换为 varchar,然后再转换回 varbinary)它开始工作。
有人知道任何解决方法吗?
【问题讨论】:
标签: sql-server full-text-search