Marklogic 如何获取搜索:来自多个范围元素源的建议作为默认建议源选项

Marklogic 如何获取搜索:来自多个范围元素源的建议作为默认建议源选项,marklogic,marklogic-8,Marklogic,Marklogic 8,我的MarkLogic数据库中的xml示例如下 <metadata> <title>first title</title> <author>gorge k</author> <location>London</location> </metadata> 现在我想在上面的默认建议源选项中添加作者和位置 我尝试使用此配置添加作者: <default-sugges

我的MarkLogic数据库中的xml示例如下

<metadata>
      <title>first title</title>
      <author>gorge k</author>
      <location>London</location>
</metadata>
现在我想在上面的默认建议源选项中添加
作者
位置

我尝试使用此配置添加
作者

<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:(err:XPTY0004)fn:string((属性{fn:QName(“,“collation”)}{”“},属性{fn:QName(“,“collation”)}{>)--arg1不是item()类型


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

您可以设置一个建议源。可以将约束设置为约束。设置一个字段范围索引和如下所示的搜索选项,我认为应该可以

<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>

除了Dave Cassel的解决方案,我建议不要将
默认建议源
引用到约束。而是将约束包含在
默认建议源
节点中

<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不仅会建议在源中找到的值(本例中为范围索引),还会建议约束名称。因此,您将有一个建议
建议:
。默认源可能不需要这样做


如需进一步阅读,请参阅此。

感谢Dave提出上述建议。我设置了字段和范围字段索引,现在可以使用了。
<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>