如何获取搜索:来自多个范围元素源的建议为default-suggestion-source选项

时间:2016-11-23 14:20:22

标签: marklogic marklogic-8

我的MarkLogic数据库中的xml示例

<metadata>
      <title>first title</title>
      <author>gorge k</author>
      <location>London</location>
</metadata>

我在titleauthorlocation设置了范围索引。我想创建默认搜索:所有元素的建议源,而不是任何单个元素。

在搜索中:选项我只将标题作为默认建议源选项,如下所示

<default-suggestion-source>
  <range collation="http://marklogic.com/collation/" 
      type="xs:string">
    <element ns="" name="title"/>
  </range>
</default-suggestion-source>

现在我想在上面的默认建议源选项中添加authorlocation

我尝试使用此配置添加author

<default-suggestion-source>
  <range collation="http://marklogic.com/collation/" 
      type="xs:string">
    <element ns="" name="title"/>
  </range>
  <range collation="http://marklogic.com/collation/" 
      type="xs:string">
    <element ns="" name="author"/>
  </range>
</default-suggestion-source>

但是我得到了以下错误:

  

[1.0-ml] XDMP-ARGTYPE :(错误:XPTY0004)fn:string((属性{fn:QName(&#34;&#34;,&#34;整理&#34;)} {&# 34; http://marklogic.com/collation/&#34;},属性{fn:QName(&#34;&#34;,&#34;整理&#34;)} {&#34; http://marklogic.com/collation/&# 34;})) - arg1不是item()类型?

任何人请建议如何实现这一目标?

2 个答案:

答案 0 :(得分:2)

您可以为refer to a constraint设置建议来源。您可以将约束设置为field, based on the three elements you're interested in。设置一个字段范围索引和搜索选项,如下所示,我认为这应该工作。

<search:options xmlns="http://marklogic.com/appservices/search">
  <constraint name="suggestions">
    <range type="xs:string" collation="http://marklogic.com/collation/">
      <field name="suggest-field"/>
    </range>
  </constraint>
  <default-suggestion-source ref="suggestions" />
</search:options>

答案 1 :(得分:0)

除了Dave Cassel的解决方案外,我建议不要将default-suggestion-source引用为约束。而是将约束包括在default-suggestion-source节点中。

<search:options xmlns="http://marklogic.com/appservices/search">
  <default-suggestion-source>
    <range type="xs:string" collation="http://marklogic.com/collation/">
      <field name="suggest-field"/>
    </range>
  </default-suggestion-source>
</search:options>

为什么? MarkLogic不仅会建议在源中找到的值(在这种情况下为范围索引),还会建议约束名称。因此,您将有一个建议suggestions:。对于默认来源,可能不希望这样做。

有关更多信息,请参见此answer