Input: : number of inner objects retrieved for an outer object, : set of outer objects, : set of inner objects |
Output: : set of ordered pairs of outer object and inner object |
(1) | // kNN join result set is initialized to the empty set |
(2) | // step 1: outer objects in a vertex sequence are grouped into an outer segment |
(3) | // is explained in Algorithm 1 |
(4) | // step 2: kNN join is evaluated for each outer segment |
(5) | for each outer segment do |
(6) | if then // see Figures 8(a) to 8(d) |
(7) | // kNN query from is performed, and its result is saved to |
(8) | // a partial join result for is generated from |
(9) | |
(10) | else if then // it is assumed that belongs to and that () is close to |
(11) | if and then // see Figure 9(a) |
(12) | // result of kNN query at is reused for other outer segment(s) |
(13) | // result of kNN query at is reused for other outer segment(s) |
(14) | // refer to Algorithm 6 |
(15) | |
(16) | else if and then // see Figure 9(b) |
(17) | // result of kNN query at is reused for other outer segment(s) |
(18) | // result of kNN query at is not reused |
(19) | // refer to Algorithm 6 |
(20) | |
(21) | else if and then // see Figure 9(c) |
(22) | // result of kNN query at is not reused |
(23) | // result of kNN query at is reused for other outer segment(s) |
(24) | // refer to Algorithm 6 |
(25) | |
(26) | else if and then // see Figure 9(d) |
(27) | // result of kNN query at is not reused |
(28) | // result of kNN query at is not reused |
(29) | // refer to Algorithm 6 |
(30) | |
(31) | return // is returned after all outer segments have been processed |