【问题标题】:Full Text Search Querying not working全文搜索查询不起作用
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-21
    • 2018-08-29
    • 2018-07-18
    相关资源
    最近更新 更多