【问题标题】:Marklogic snippet return incomplete result setMarklogic 片段返回不完整的结果集
【发布时间】:2020-06-11 15:08:59
【问题描述】:

我正在寻找在 sn-p 中获取所有匹配项的方法。但我得到的结果集不完整。 我已将 maxSnippetChars、maxMatches、perMatchTokens 值设置为最大值。 文档的结构是一个对象数组,我希望路径所有匹配对象的属性(概要)满足匹配条件。 你能帮帮我吗? 我正在使用以下代码:-

.where(jsearch.byExample({"$query":{Synopsis:{"$word":"word","$case-sensitive":false}}}))
.slice(0, Number.MAX_SAFE_INTEGER)
 .map({
   snippet: {

   maxSnippetChars:Number.MAX_SAFE_INTEGER,
     maxMatches:Number.MAX_SAFE_INTEGER,
   perMatchTokens: Number.MAX_SAFE_INTEGER
  }, extract: {paths: ['/ID','/FullName']}
  } 
  )
 .result() ```

【问题讨论】:

    标签: javascript search marklogic-10


    【解决方案1】:

    如果您打算配置 sn-p 生成器属性,您可以调整 jsearch 管道中的内置映射器顺序,如下所示:

      .where(jsearch.byExample({synopsis: {$word: 'word'}}))
      .slice(0, 15)
      .map({extract: {paths: ['/ID','/FullName']}},
          {snippet: {
            maxSnippetChars: 150,
            maxMatches: 4,
            perMatchTokens: 30
      }})
      .result()
    
    • 请注意,逻辑是先提取 xpath 属性,然后应用内置的 sn-p 生成器。
    • 使用毯子***_INTEGER 的警告:这样做可能会通过将其设置得太小而返回更少的匹配 sn-p 文本,或者通过将其设置得太大来否定约束。

    一般来说,下面的查询应该返回所需的提取路径和 sn-p 而不会丢失任何文本:

      .where(jsearch.byExample({synopsis: {$word: 'word'}}))
      .slice(0, 15)
      .map({extract: {paths: ['/ID','/FullName']}}
      .result()
    

    【讨论】:

    • 感谢您的帮助 Fiona chen。我正在使用 sn-p 在数组中精确定位匹配文本。匹配文本位于对象数组中,通过在提取路径中提及,我得到了完整的数组,而不仅仅是匹配的元素;将按照您提到的那样配置 sn-p 生成器:)
    猜你喜欢
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多