nl_tokens: Extract a snippet from a document capturing text either side of any term ( s ) featured in a whitespace - delimited search query . We look for up to 3 matches in a document and concatenate them .
pl_tokens: function makeSnippet ( doc , query ) { // generate a regex of the form /[^a-zA-Z](term1|term2)/ for the query "term1 term2" const termRegexMatchers = lunr . tokenizer ( query ) . map ( term => escapeRegexString ( term ) ) ; const termRegexString = '[^a-zA-Z](' + termRegexMatchers . join ( '|' ) + ')' ; const termRegex = new RegExp ( termRegexString , 'gi' ) ; const snippets = [ ] ; let match ; // find up to 4 matches in the document and extract snippets to be joined together // TODO: detect when snippets overlap and merge them. while ( ( match = termRegex . exec ( doc . body ) ) !== null && snippets . length < 4 ) { const matchStr = match [ 1 ] , index = <mask> . index + 1 , before = doc . body . substring ( index - SNIPPET_PAD_LENGTH , index ) , after = doc . body . substring ( index + matchStr . length , index + matchStr . length + SNIPPET_PAD_LENGTH ) ; snippets . push ( before + '<mark>' + matchStr + '</mark>' + after ) ; } if ( snippets . length ) { return '…' + s ippets.j o in(  ' … ' ) + ' ' } return defaultSnippet ( doc ) ; }