Фрагмент Marklogic возвращает неполный набор результатов

Я ищу способ получить все совпадения в сниппете. Но получаю неполный набор результатов. Я установил maxSnippetChars,maxMatches,perMatchTokens на максимальное значение. Структура документов - это массив объектов, и мне нужно указать все соответствующие свойства объекта (Synopsis), которые удовлетворяют критериям соответствия. не могли бы вы помочь мне. Я использую код ниже:-

.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() ```

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()
Другие вопросы по тегам