@@ -16,7 +16,7 @@ export class UnorderedSearchIndex implements ISearchIndex {
1616 * @inheritDocs
1717 */
1818 indexDocument ( token : string , uid : string , doc : Object ) : void {
19- if ( ! this . _tokenToUidToDocumentMap [ token ] ) {
19+ if ( ! this . _tokenToUidToDocumentMap . hasOwnProperty ( token ) ) {
2020 this . _tokenToUidToDocumentMap [ token ] = { } ;
2121 }
2222
@@ -29,25 +29,30 @@ export class UnorderedSearchIndex implements ISearchIndex {
2929 search ( tokens : Array < string > , corpus : Array < Object > ) : Array < Object > {
3030 var intersectingDocumentMap = { } ;
3131
32+ var tokenToUidToDocumentMap = this . _tokenToUidToDocumentMap ;
33+
3234 for ( var i = 0 , numTokens = tokens . length ; i < numTokens ; i ++ ) {
3335 var token = tokens [ i ] ;
34- var documentMap = this . _tokenToUidToDocumentMap [ token ] || { } ;
36+ var documentMap = tokenToUidToDocumentMap [ token ] ;
37+
38+ // Short circuit if no matches were found for any given token.
39+ if ( ! documentMap ) {
40+ return [ ] ;
41+ }
3542
3643 if ( i === 0 ) {
3744 var keys = Object . keys ( documentMap ) ;
38- var numKeys = keys . length ;
3945
40- for ( var i = 0 ; i < numKeys ; i ++ ) {
41- var uid = keys [ i ] ;
46+ for ( var j = 0 , numKeys = keys . length ; j < numKeys ; j ++ ) {
47+ var uid = keys [ j ] ;
4248
4349 intersectingDocumentMap [ uid ] = documentMap [ uid ] ;
4450 }
4551 } else {
4652 var keys = Object . keys ( intersectingDocumentMap ) ;
47- var numKeys = keys . length ;
4853
49- for ( var i = 0 ; i < numKeys ; i ++ ) {
50- var uid = keys [ i ] ;
54+ for ( var j = 0 , numKeys = keys . length ; j < numKeys ; j ++ ) {
55+ var uid = keys [ j ] ;
5156
5257 if ( ! documentMap . hasOwnProperty ( uid ) ) {
5358 delete intersectingDocumentMap [ uid ] ;
@@ -57,10 +62,9 @@ export class UnorderedSearchIndex implements ISearchIndex {
5762 }
5863
5964 var keys = Object . keys ( intersectingDocumentMap ) ;
60- var numKeys = keys . length ;
6165 var documents = [ ] ;
6266
63- for ( var i = 0 ; i < numKeys ; i ++ ) {
67+ for ( var i = 0 , numKeys = keys . length ; i < numKeys ; i ++ ) {
6468 var uid = keys [ i ] ;
6569
6670 documents . push ( intersectingDocumentMap [ uid ] ) ;
0 commit comments