@@ -112,7 +112,20 @@ export class TfIdfSearchIndex implements ISearchIndex {
112112 var tokenToIdfCache = this . _tokenToIdfCache ;
113113 var uidFieldName = this . _uidFieldName ;
114114
115- function calculateIdf ( token : string , documents : Array < Object > ) : number {
115+ var calculateTfIdf = this . _createCalculateTfIdf ( ) ;
116+
117+ // Return documents sorted by TF-IDF
118+ return documents . sort ( ( documentA , documentB ) =>
119+ calculateTfIdf ( tokens , documentB , corpus ) -
120+ calculateTfIdf ( tokens , documentA , corpus )
121+ ) ;
122+ }
123+
124+ _createCalculateIdf ( ) : Function {
125+ var tokenMap = this . _tokenMap ;
126+ var tokenToIdfCache = this . _tokenToIdfCache ;
127+
128+ return function calculateIdf ( token : string , documents : Array < Object > ) : number {
116129 if ( ! tokenToIdfCache [ token ] ) {
117130 var numDocumentsWithToken :number = tokenMap [ token ] && tokenMap [ token ] . $numDocumentOccurrences || 0 ;
118131
@@ -121,8 +134,14 @@ export class TfIdfSearchIndex implements ISearchIndex {
121134
122135 return tokenToIdfCache [ token ] ;
123136 }
137+ }
124138
125- function calculateTfIdf ( tokens : Array < string > , document : Object , documents : Array < Object > ) : number {
139+ _createCalculateTfIdf ( ) : Function {
140+ var tokenMap = this . _tokenMap ;
141+ var uidFieldName = this . _uidFieldName ;
142+ var calculateIdf = this . _createCalculateIdf ( ) ;
143+
144+ return function calculateTfIdf ( tokens : Array < string > , document : Object , documents : Array < Object > ) : number {
126145 var score :number = 0 ;
127146
128147 for ( var i = 0 , numTokens = tokens . length ; i < numTokens ; ++ i ) {
@@ -145,11 +164,5 @@ export class TfIdfSearchIndex implements ISearchIndex {
145164
146165 return score ;
147166 }
148-
149- // Return documents sorted by TF-IDF
150- return documents . sort ( ( documentA , documentB ) =>
151- calculateTfIdf ( tokens , documentB , corpus ) -
152- calculateTfIdf ( tokens , documentA , corpus )
153- ) ;
154167 }
155168} ;
0 commit comments