Marklogic中的文件类型方面

Marklogic中的文件类型方面,marklogic,marklogic-8,Marklogic,Marklogic 8,背景:我在Marklogic生产数据库中加载了大约500k个文档。我们有一个使用CPF的处理管道,用于文档摄取。我存储文档的MIME类型 我需要有基于文件类型的方面。我不能将MIME类型用于刻面,因为普通用户不理解MIME类型,他们更熟悉扩展(Excel、Word、Jpeg等)。。我的问题是多个MIME类型可以映射到一个文件类型,例如:-Excel有10个或更多MIME类型,我想将它们全部映射到Excel 以下是我提出的关于如何实施的两种可能性。我想知道是否还有其他好的方法来实现这一点 我有一个

背景:我在Marklogic生产数据库中加载了大约500k个文档。我们有一个使用CPF的处理管道,用于文档摄取。我存储文档的MIME类型

我需要有基于文件类型的方面。我不能将MIME类型用于刻面,因为普通用户不理解MIME类型,他们更熟悉扩展(Excel、Word、Jpeg等)。。我的问题是多个MIME类型可以映射到一个文件类型,例如:-Excel有10个或更多MIME类型,我想将它们全部映射到Excel

以下是我提出的关于如何实施的两种可能性。我想知道是否还有其他好的方法来实现这一点

  • 我有一个“transform”方法,它基本上采用基于MIME类型生成的刻面,并将与文件类型对应的所有MIME类型分组。我有一个配置文件(XML),其中包含MIME类型到文件类型的所有映射。这样,当新的MIME类型添加到文件类型时,我所能做的就是编辑此配置文件。
    此方法的缺点是,在执行搜索查询时,我需要通过自定义约束扩展搜索字符串,以便将文件类型转换为每个单独的MIME类型
  • 第二个选择是在摄取过程中,我添加文件类型,这将解决我的刻面和搜索问题
    此选项的缺点是,我需要将文件类型添加到所有现有的500k文档中,在此之前,我需要禁用CPF或添加某种逻辑,在这些500k文档上触发CPF时,我告诉不要采取任何操作。因为它是生产数据库,所以我无权禁用CPF以接收新文档
  • 我喜欢第二个选项,但有没有比更改CPF代码或禁用触发器数据库一段时间更好的方法呢


    还有哪一个(1或2)是更好的方法?我想知道是否有比这些更好的选项。

    您准确地列出了这两个选项。在查询时执行,或在索引时执行。你准确地列出了优点和缺点。我的建议:如果它足够快,可以在查询时执行,并且可以接受更高级代码的维护,那么就这样做。否则,将知识放入文档。

    仅使用500k个文档,我认为查询时间将足够快。为此,您可以利用此分组约束:

    您可以使用安装和部署它。之后,您可以在搜索选项中使用以下内容:

    <constraint name="Attachment-Type">
      <custom>
        <parse apply="parse-structured" ns="http://marklogic.com/grouping-constraint" at="/ext/mlpm_modules/ml-constraints/grouping-constraint.xqy"/>
        <start-facet apply="start" ns="http://marklogic.com/grouping-constraint" at="/ext/mlpm_modules/ml-constraints/grouping-constraint.xqy"/>
        <finish-facet apply="finish" ns="http://marklogic.com/grouping-constraint" at="/ext/mlpm_modules/ml-constraints/grouping-constraint.xqy"/>
        <facet-option>limit=5</facet-option>
        <facet-option>frequency-order</facet-option>
        <facet-option>descending</facet-option>
        <facet-option>any</facet-option>
      </custom>
      <annotation>
        <range type="xs:string" facet="true" collation="http://marklogic.com/collation//S1">
          <element ns="http://my-namespace.com" name="mime-type"/>
        </range>
        <config>
          <group label="Audio">
            <match pattern="audio/*"/>
          </group>
          <group label="Video">
            <match pattern="video/*"/>
            <match pattern="application/vnd.rn-realmedia"/>
          </group>
          <group label="Documents">
            <match pattern="application/msword"/>
            <match pattern="application/vnd.wordperfect"/>
            <match pattern="application/x-wordstar"/>
            <match pattern="application/pdf"/>
            <match pattern="application/postscript"/>
            <match pattern="application/rtf"/>
            <match pattern="application/x-xywrite"/>
            <match pattern="application/x-mass11"/>
          </group>
          <group label="Spreadsheets">
            <match pattern="application/vnd.ms-excel"/>
          </group>
          <group label="Presentations">
            <match pattern="application/vnd.ms-powerpoint"/>
          </group>
          <show-remainder label="Other"/>
        </config>
      </annotation>
    </constraint>
    
    
    极限=5
    频率顺序
    下降的
    任何
    
    但是,性能会随着您提供的组和模式的数量以及文档总数的增加而降低。一旦文档总数增长超过数百万,这可能需要相对较长的搜索解析时间。在这种情况下,你最好提前计算分组


    xdmp:document insert($uri,doc($uri),xdmp:document get permissions($uri),…)重新插入文件即可