0

我正在寻找在片段中获取所有匹配项的方法。但我得到的结果集不完整。我已将 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() ```
4

1 回答 1

1

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

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

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

  .where(jsearch.byExample({synopsis: {$word: 'word'}}))
  .slice(0, 15)
  .map({extract: {paths: ['/ID','/FullName']}}
  .result()
于 2020-06-14T03:17:17.457 回答