2011-12-21 96 views
1

我正在运行SQL Server 2008 R2开发人员版。全文搜索查询不起作用

我已经跑了以下内容:

exec sp_fulltext_database 'enable' 

然后我创建了一个表,一个文件类型柱上,并用VARBINARY(MAX)的数据类型的FileContent列。然后,我右键单击表并使用主键,文件类型列和FileContent列定义全文目录。然后我上传

// <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 Server的文件(使用C#这种辅助方法)和I可以在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。

有什么建议吗?由于

UPDATE

看来,SQL Server框中不能使用全文搜索与DOCX,XLSX等

这似乎令人难以置信考虑办公室在2007年切换到这种格式,我使用SQL Server 2008 R2和新的文档类型甚至没有注册。

微软在这是最好的!

感谢您的贡献。

+0

你如何写入文件? – Hammerstein 2011-12-21 12:17:17

回答

3

您需要指示SQL Server使用安装在OS中的文档过滤器。此外,您需要将文档的类型与二进制文件一起存储,以便FT引擎使用正确的过滤器。看看this MSDN article