@@ -513,9 +513,11 @@ const Search = {
513513 // perform the search on the required terms
514514 searchTerms . forEach ( ( word ) => {
515515 const files = [ ] ;
516+ // find documents, if any, containing the query word in their text/title term indices
517+ // use Object.hasOwnProperty to avoid mismatching against prototype properties
516518 const arr = [
517- { files : terms [ word ] , score : Scorer . term } ,
518- { files : titleTerms [ word ] , score : Scorer . title } ,
519+ { files : terms . hasOwnProperty ( word ) ? terms [ word ] : undefined , score : Scorer . term } ,
520+ { files : titleTerms . hasOwnProperty ( word ) ? titleTerms [ word ] : undefined , score : Scorer . title } ,
519521 ] ;
520522 // add support for partial matches
521523 if ( word . length > 2 ) {
@@ -547,8 +549,9 @@ const Search = {
547549
548550 // set score for the word in each file
549551 recordFiles . forEach ( ( file ) => {
550- if ( ! scoreMap . has ( file ) ) scoreMap . set ( file , { } ) ;
551- scoreMap . get ( file ) [ word ] = record . score ;
552+ if ( ! scoreMap . has ( file ) ) scoreMap . set ( file , new Map ( ) ) ;
553+ const fileScores = scoreMap . get ( file ) ;
554+ fileScores . set ( word , record . score ) ;
552555 } ) ;
553556 } ) ;
554557
@@ -587,7 +590,7 @@ const Search = {
587590 break ;
588591
589592 // select one (max) score for the file.
590- const score = Math . max ( ...wordList . map ( ( w ) => scoreMap . get ( file ) [ w ] ) ) ;
593+ const score = Math . max ( ...wordList . map ( ( w ) => scoreMap . get ( file ) . get ( w ) ) ) ;
591594 // add result to the result list
592595 results . push ( [
593596 docNames [ file ] ,
0 commit comments