Фрагмент 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()