【问题标题】:Azure SQL Server full-text search doesn't work for .doc .docx typesAzure SQL Server 全文搜索不适用于 .doc .docx 类型
【发布时间】:2016-12-26 18:52:29
【问题描述】:

我正在尝试为表格设置全文搜索

.

我尽一切努力让它发挥作用:

EXEC sp_fulltext_catalog 'DocumentsCatalog', 'create';
EXEC sp_fulltext_catalog 'DocumentsCatalog', 'start_full'
EXEC sp_fulltext_table 'dbo.DocumentBody', 'create', 'DocumentsCatalog',  'PK_DocumentBody'
EXEC sp_fulltext_column 'dbo.DocumentBody', 'Value', 'add', 0, 'Type'
EXEC sp_fulltext_table 'dbo.DocumentBody', 'start_change_tracking'
EXEC sp_fulltext_table 'dbo.DocumentBody', 'update_index'

为了避免我的数据库支持这些类型的文档的问题,我做了:

SELECT * 
FROM sys.fulltext_document_types 
WHERE document_type IN ('.doc', '.docx', '.html')

输出:

document_type |class_id                            | path    |version       |manufacturer
--------------|------------------------------------|---------|--------------|-----------------------
.doc          |64F1276A-7A68-4190-882C-5F14B7852019|    NULL |              |
.docx         |5A98B233-3C59-4B31-944C-0E560D85E6C3|    NULL |              |
.html         |E0CA5340-4534-11CF-B952-00AA0051FE20|    NULL |  12.0.6828.0 | Microsoft Corporation

之后我插入了 2 个类型为“.html”和“.docx”的文档。

当我搜索时

SELECT *
FROM DocumentBody 
WHERE CONTAINS([Value], 'some html content')

它按预期工作,但是当我对“.docx”内容执行相同操作时,它什么也不返回。

有谁知道为什么“.docx”或“.doc”类型的全文搜索不能按预期工作?

【问题讨论】:

    标签: c# azure-sql-database sql-server-2016


    【解决方案1】:

    Azure SQL 数据库全文搜索不支持 Office 和 PDF 等“二进制”文件格式,仅支持文本格式(包括 html)。

    您可以通过编程方式从 Office 文档中提取文本,并将提取的文本存储在全文索引列中

    【讨论】:

    • 如果是这样设置文档类型的原因是什么?您是否对描述这些方法的 MSDN 有任何参考?
    • 提取文本只是一种解决方法 - blogs.msdn.microsoft.com/jasonz/2009/08/31/…
    • 谢谢埃里克。我终于想通了。因此,对于本地 SQL Server,我可以为不同类型的文档安装 IFilters 并按预期使用它。对于 Azure SQL 数据库,它不起作用,因为它不支持 .doc 和 .docx 类型的文档,我必须使用描述的方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 2019-09-25
    • 2021-02-21
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 2016-08-14
    相关资源
    最近更新 更多