面对XML标记值

Rav*_*avi 2 marklogic marklogic-8

我想在xml标签上进行分面,并在标签值上进行子分面,我有一个像下面这样的xml文档

<TermiteJServiceResponse>
  <EntityTypeHit type="DRUG">
    <HitCollection>
      <Hit type="DRUG" id="CHEMBL1201288">
        <Name>Dantrolene</Name>
      </Hit>
      <Hit type="DRUG" id="CHEMBL286398">
        <Name>Propylene Glycol</Name>
      </Hit>
      <Hit type="DRUG" id="GXC376D7F8C0E7A0C3787E8A2384DC56E80">
        <Name>PEG400</Name>
      </Hit>
    </HitCollection>
  </EntityTypeHit>
  <EntityTypeHit type="COMPOUNDS">
    <HitCollection>
      <Hit type="COMPOUNDS" id="A-409912.5">
        <Name>A-409912.5</Name>
      </Hit>
      <Hit type="COMPOUNDS" id="A-409912">
        <Name>A-409912</Name>
      </Hit>
    </HitCollection>
  </EntityTypeHit>
  <EntityTypeHit type="GENE">
    <HitCollection>
      <Hit type="GENE" id="TRH">
        <Name>thyrotropin-releasing hormone</Name>
      </Hit>
    </HitCollection>
  </EntityTypeHit>
  <EntityTypeHit type="BIOPROC">
    <HitCollection>
      <Hit type="BIOPROC" id="BP70302">
        <Name>infusion</Name>
      </Hit>
      <Hit type="BIOPROC" id="D009200">
        <Name>Myocardial Contraction</Name>
      </Hit>
      <Hit type="BIOPROC" id="BP70198">
        <Name>cmax values</Name>
      </Hit>
      <Hit type="BIOPROC" id="D001835">
        <Name>Body Weight</Name>
      </Hit>
      <Hit type="BIOPROC" id="D062186">
        <Name>Arterial Pressure</Name>
      </Hit>
      <Hit type="BIOPROC" id="BP70209">
        <Name>contractility</Name>
      </Hit>
      <Hit type="BIOPROC" id="D006339">
        <Name>Heart Rate</Name>
      </Hit>
      <Hit type="BIOPROC" id="BP70316">
        <Name>intravenal</Name>
      </Hit>
    </HitCollection>
  </EntityTypeHit>
  <EntityTypeHit type="SPECIES">
    <HitCollection>
      <Hit type="SPECIES" id="D051381">
        <Name>Rats</Name>
      </Hit>
    </HitCollection>
  </EntityTypeHit>

</TermiteJServiceResponse>
Run Code Online (Sandbox Code Playgroud)

我想基于上面的文件DRUGS和sub facet on Drug names以及类似化合物和化合物名称上的子方面

wst*_*wst 7

看一下关于" 约束搜索和分面导航 " 的MarkLogic搜索开发人员指南.

使用Search API,您可以使用该<search:options>元素定义约束和构面(一种约束).对于每个方面,您需要定义范围索引.理想情况下,您将使用语义命名的元素(<DRUG>而不是<Hit type="DRUG">)来进行更简单的索引; 但是,如果这个模式不灵活,那么你可以定义一个工作面区域指数超过//Hit[type="DRUG"],而在像搜索选项引用它:

<constraint name="Drug">
  <range type="xs:string" facet="true">
    <path-index>
      //Hit[type="DRUG"]
    </path-index>
  </range>
</constraint>
Run Code Online (Sandbox Code Playgroud)

当您使用search:search或调用Search API时search:resolve,它将返回一个search:response元素,其中包含您在其中定义的结果(片段)和约束或构面值<search:options>.