elasticsearch - 设计处理和搜索 MS Office 文档的 ASP.NET 应用程序

标签 elasticsearch webforms sql-server-2012 full-text-search asp.net-4.5

我目前正在设计一个新的 Web 应用程序,它将处理大量的 MS Office 文档。

要求之一是不仅能够在我的 SQL Server 数据库表的列中进行搜索,而且能够在每天大约 50-200 个文档的情况下上传到 Web 应用程序的文档中进行搜索。我的解决方案应该能够同时搜索文档 内容 ,以及 元数据 Office 文件(创建者等)

我想知道是否有人对这种解决方案有实际经验,并且可以帮助我设计它。

我的第一个想法是使用 SQL Server 2012 的 FILETABLE方法:为文档定义一个公共(public)目录,表面为FILETABLE在 SQL Server 表中,并在其上放置一个 SQL Server 全文目录。我非常有信心这将允许我按文件名和内容搜索文件(使用全文搜索) - 但是 呢?元数据 ?我似乎找不到任何关于它的东西....

另外:是否有人在方面有任何动手实践经验?性能 这样的解决方案?我很难判断 Win32 I/O 将多少新文档存储到 FILETABLE文件夹会影响性能。在 FILETABLE 上进行全文搜索怎么样?基于 MS Office 文档集?那里有什么经验吗?

第二个想法是使用某种专用的全文搜索系统,例如 ElasticSearch - 对此有何评论? ES 是否支持索引和搜索 MS Office 文档,包括元数据?还是仅索引文档的内容?

任何想法和建议——尤其是亲身实践的真实体验——都将受到欢迎!

最佳答案

关于您的第二个想法,Elasticsearch 支持通过 mapper attachments plugin 索引 MS Office 文档。由 Apache Tika 提供支持,从而支持各种MS Office document formats .该插件不仅可以索引文件内容,还可以根据需要索引元数据,即 date , title , author , content type , ETC。

所以想法是创建一个索引和一个映射类型,其字段具有 attachment类型以及您想要索引和搜索的所有元数据字段。

PUT /test_index
{
  "mappings": {
    "test_type": {
      "properties": {
        "my_attachment": {
          "type": "attachment",
          "fields": {
            "content": {
              "type": "string",
              "index": "no"
            },
            "title": {
              "type": "string",
              "store": "yes"
            },
            "date": {
              "type": "date",
              "store": "yes"
            },
            "author": {
              "type": "string",
              "analyzer": "myAnalyzer"
            },
            "keywords": {
              "type": "string",
              "store": "yes"
            },
            "content_type": {
              "type": "string",
              "store": "yes"
            },
            "content_length": {
              "type": "integer",
              "store": "yes"
            },
            "language": {
              "type": "string",
              "store": "yes"
            }
          }
        }
      }
    }
  }
}

然后您可以搜索任何这些字段,即文件内容本身以及任何元数据字段。

如果您想试运行该插件,它还提供 a standalone tool您可以运行以查看将从文档中提取的内容,以及可以从中搜索到的内容。

关于elasticsearch - 设计处理和搜索 MS Office 文档的 ASP.NET 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34979337/

相关文章:

sql - SQL Server 2012或2008中两行之间的时间差

python - 执行批量索引操作时如何在Elasticsearch中指定显式文档ID?

python - 在现有的sqlite关系数据库中创建Index Elasticsearch

c# - javascript 函数 "$find"是否特定于 asp.net webforms 中的 telerik 客户端对象?

asp.net-mvc-3 - ASP.NET Webforms 和 MVC 3 中的成员资格提供程序之间的区别

c# - 错误页面上的 ASP.net 捕获错误

sql-server - 执行复制数据库向导包时为"Timeout expired"

elasticsearch - Elasticsearch聚合

elasticsearch - 如何在 ElasticSearch 中获取带有计数的直方图

c# - 指定的 LocalDB 实例不存在