我想对存储在 SQL Server 2016 中的 XML 文件运行全文搜索,以varbinary
在这些文件中查找短语(id、姓名、电话等)。问题是查询没有找到 UTF-16 编码的文件。
我有以下表格
表文件:
ID | 文件名 |
---|---|
1 | utf8-encoded.xml |
2 | utf16-encoded.xml |
表文件内容:
ID | 内容 | 类型 |
---|---|---|
1 | 0x444ae9b... | XML |
2 | 0x422de56... | XML |
和一个观点:
CREATE VIEW Search
WITH SCHEMABINDING
AS
SELECT
e.Id, e.Filename, c.[Content], c.[Type]
FROM
Files AS f
INNER JOIN
FileContent AS c ON c.Id = f.Id
然后我在 .NET Framework 4.6.1 中使用 Dapper 在 C# 中执行全文搜索查询:
var searchTerm = "xxxxx"; // from user
var query = "SELECT * FROM Search s WHERE CONTAINS(s.Content, @searchTerm)";
var data = connection.Query<File>(query, new {searchTerm});
...
像这样将 Dapper 参数更改为 sql-injectable 字符串连接:WHERE CONTAINS(s.Content, " + searchTerm" + ")"
不会改变任何东西。
该查询查找 UTF-8 编码的 XML 文件,但找不到 UTF-16 编码的文件。我相信这不是与 Dapper 相关的问题。
我该如何解决这个问题才能找到 UTF-16 编码的 XML 文件呢?SQL Server 的全文搜索是否也适用于 UTF-16 编码的 XML 文件?