@@ -15,41 +15,55 @@ export class UnorderedSearchIndex implements ISearchIndex {
1515 /**
1616 * @inheritDocs
1717 */
18- indexDocument ( token : string , uid : string , document : Object ) : void {
18+ indexDocument ( token : string , uid : string , doc : Object ) : void {
1919 if ( ! this . _tokenToUidToDocumentMap [ token ] ) {
2020 this . _tokenToUidToDocumentMap [ token ] = { } ;
2121 }
2222
23- this . _tokenToUidToDocumentMap [ token ] [ uid ] = document ;
23+ this . _tokenToUidToDocumentMap [ token ] [ uid ] = doc ;
2424 }
2525
2626 /**
2727 * @inheritDocs
2828 */
2929 search ( tokens : Array < string > , corpus : Array < Object > ) : Array < Object > {
30- var uidToDocumentMap : { [ uid : string ] : any } = { } ;
30+ var intersectingDocumentMap = { } ;
3131
3232 for ( var i = 0 , numTokens = tokens . length ; i < numTokens ; i ++ ) {
33- var token : string = tokens [ i ] ;
34- var currentUidToDocumentMap : { [ uid : string ] : any } = this . _tokenToUidToDocumentMap [ token ] || { } ;
33+ var token = tokens [ i ] ;
34+ var documentMap = this . _tokenToUidToDocumentMap [ token ] || { } ;
3535
3636 if ( i === 0 ) {
37- for ( var uid in currentUidToDocumentMap ) {
38- uidToDocumentMap [ uid ] = currentUidToDocumentMap [ uid ] ;
37+ var keys = Object . keys ( documentMap ) ;
38+ var numKeys = keys . length ;
39+
40+ for ( var i = 0 ; i < numKeys ; i ++ ) {
41+ var uid = keys [ i ] ;
42+
43+ intersectingDocumentMap [ uid ] = documentMap [ uid ] ;
3944 }
4045 } else {
41- for ( var uid in uidToDocumentMap ) {
42- if ( ! currentUidToDocumentMap [ uid ] ) {
43- delete uidToDocumentMap [ uid ] ;
46+ var keys = Object . keys ( intersectingDocumentMap ) ;
47+ var numKeys = keys . length ;
48+
49+ for ( var i = 0 ; i < numKeys ; i ++ ) {
50+ var uid = keys [ i ] ;
51+
52+ if ( ! documentMap [ uid ] ) {
53+ delete intersectingDocumentMap [ uid ] ;
4454 }
4555 }
4656 }
4757 }
4858
49- var documents : Array < Object > = [];
59+ var keys = Object . keys ( intersectingDocumentMap ) ;
60+ var numKeys = keys . length ;
61+ var documents = [ ] ;
62+
63+ for ( var i = 0 ; i < numKeys ; i ++ ) {
64+ var uid = keys [ i ] ;
5065
51- for (var uid in uidToDocumentMap) {
52- documents . push ( uidToDocumentMap [ uid ] ) ;
66+ documents . push ( intersectingDocumentMap [ uid ] ) ;
5367 }
5468
5569 return documents ;
0 commit comments