我有一个包含HTML数据的表,我想通过HTML过滤器使用全文索引进行搜索
所以我创建了一个索引:
create fulltext catalog mycatalog as default
在MyTable上创建全文索引(正文类型列文件类型)
密钥索引pk_mytable
< /代码>
bodyis avarbinary(max)column with html.filetypecolumn is a computed column returns.html。
没有返回任何结果。
我验证是否安装了.html->filter。全文索引也已正确安装,如果我将列转换为nvarchar,则可以正常工作,并且只创建一个“纯文本”索引(而不是HTML)。
SQL日志或FTS日志中没有错误。
关键字表只是空的!
选择*
来自sys.dm_ts_index_关键字
(数据库ID(“MyDatabase”),对象ID(“MyTable”))
< /代码>
它返回的全部是“文件结束”符号。
上面写着“文档数35”,这意味着文档已被处理,但没有提取关键字。
ps.我有SQL ServerExpress2012版(所有高级功能包括全文)。这就是原因吗?但是,同样,“纯”全文搜索工作只是很好!
PP>PPS。让我的同事在SQL Express 2016上测试这个-同样的结果…在我们的生产服务器“Enterprise”版本上尝试过-相同。
< H2>更新< /H2>
好吧,原来全文索引不支持Unicode!!在varbinary列中。当我将列转换为非Unicode时(通过将其转换为nvarchar,然后转换为varchar,然后再转换回varbinary,代码>)它开始工作。
有人知道任何解决办法吗?
Body
是一个varbinary(max)
带HTML的列。这个Filetype
列是计算列返回值.html
.
没有返回任何结果。
我证实了HTML
过滤器已安装。全文索引也已正确安装,并且工程罚款如果我将列转换为nvarchar
只创建一个“纯文本”索引(而不是HTML)。
SQL日志或FTS日志中没有错误。
关键字表只是空的!
SELECT *
FROM sys.dm_fts_index_keywords
(DB_ID('myDatabase'), OBJECT_ID('myTable'))
它返回的只是“文件结束”符号。
它说“文档数35”,这意味着文档被处理,但没有提取关键字。
我有SQL服务器快递2012版(具有所有高级功能,包括全文)。这就是原因吗?但是,同样,“纯”全文搜索工作只是很好!
PPS。让我的同事在SQL Express 2016上测试这个-同样的结果…在我们的生产服务器“企业版”上尝试过-相同。
更新
好吧,原来全文索引不支持Unicode!!在varbinary列中。当我将列转换为非Unicode时(通过将其转换为纳瓦卡尔
然后到varchar
然后回到varbinary
)它开始工作了。
有人知道任何解决办法吗?