【发布时间】:2011-12-21 21:01:57
【问题描述】:
我正在运行 SQL Server 2008 R2 开发人员版。
我已经运行了以下内容:
exec sp_fulltext_database 'enable'
然后,我创建了一个表,其中包含一个 FileType 列和一个数据类型为 VARBINARY(MAX) 的 FileContent 列。然后我右键单击表并使用主键定义全文目录,它们是 fileType 列和 FileContent 列。然后我上传了一个文档(在 C# 中使用这个辅助方法)
// <summary>
/// Read the file into a byte array for full text search
/// </summary>
/// <param name="inputStream"></param>
/// <returns></returns>
private byte[] GetFile(Stream inputStream)
{
BinaryReader br = new BinaryReader(inputStream);
byte[] file = br.ReadBytes((int)inputStream.Length);
br.Close();
inputStream.Close();
return file;
}
文件已上传到 SQL 服务器,我可以在 FileContent 列中看到二进制数据。
我现在正在尝试查询全文目录:
SELECT * FROM Entities.Documents
WHERE CONTAINS(FileContent, 'tablesorting')
SELECT * FROM Entities.Documents
WHERE CONTAINS(FileContent, 'Tablesorting')
SELECT * FROM Entities.Documents
WHERE FREETEXT(FileContent, 'tablesorting')
SELECT * FROM Entities.Documents
WHERE FREETEXT(FileContent, 'Tablesorting')
这些都不会返回任何数据,即使我上传的文档(Excel 电子表格版本 2010)包含单词 tablesorting。
有什么建议吗?谢谢
更新
SQL Server 框似乎无法将全文搜索与 docx、xlsx 等一起使用。
考虑到 Office 在 2007 年切换到这种格式,而我使用的是 SQL Server 2008 R2 并且甚至没有注册新的文档类型,这似乎令人难以置信。
微软处于最佳状态!
感谢您的贡献。
【问题讨论】:
-
文件怎么写?
标签: c# sql-server full-text-search