全文搜索查询无法正常工作

时间:2011-12-21 12:04:50

标签: c# sql-server full-text-search

我正在运行SQL Server 2008 R2开发人员版。

我运行了以下内容:

exec sp_fulltext_database 'enable'  

然后我创建了一个包含FileType列和FileContent列的表,其数据类型为VARBINARY(MAX)。然后我右键单击表并使用主键定义全文目录,它们是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,xl​​sx等全文搜索。

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

微软最好!

感谢您的贡献。

1 个答案:

答案 0 :(得分:3)

您需要指示SQL Server使用操作系统中安装的文档过滤器。此外,您需要存储文档的类型以及二进制文件,以便FT引擎使用正确的过滤器。看看this MSDN article