<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>TopT-kopS-easrecahrcOhovveerr GgrrididfiFleile</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Martin Šumák</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Peter Gurský Martin Sumak</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Peter Gursky</string-name>
          <email>SpPSle.oltovJvae.karika.iagursky@upjs.sk</email>
        </contrib>
      </contrib-group>
      <pub-date>
        <year>2012</year>
      </pub-date>
      <fpage>115</fpage>
      <lpage>126</lpage>
      <abstract>
        <p>In the era of huge datasets, the top- search becomes an effective way to decrease the search time of top- objects. Since we suppose locally accessible data only, the multidimensional indexes containing all attributes together seem to be more effective than a distribution of each attribute to a separate index. Therefore we introduce the top- search algorithm over grid file the multidimensional index not used for the top- search yet. Grid file does not require computation with all attribute values together like R-tree, R*-tree (i.e. computation of area, perimeter) nor a metric like M-tree. Grid file can be used directly for indexing any type of attributes with natural ordering. Our experiments show that grid file, R-tree and R*-tree offer much better performance of the top- search than separated B+-trees and table scan.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1 Introduction</title>
      <p>In our research we deal with the problem of searching top- products in e-shops
according to user preferences. Current e-shops typically provide fulltext search, menu of
product domains, single attribute value specification and products sorted usually
according to price or product name. We are not aware of any e-shop with more complex
user preferences model e.g. a combination of selection techniques mentioned above.</p>
      <p>
        Our model of user preferences [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] consists of preferences to values of several
attributes in the form of fuzzy functions (see Figure 1) and a monotone combination
function. Such complex user preference model approaches real life preferences and
leads to more precise results than standard selection techniques. The preferences can
be obtained implicitly by tracking user actions in the e-shop or explicitly by user
specification. The top- search with a query based on such preferences can be
computed over different index structures – a set of B+-trees [
        <xref ref-type="bibr" rid="ref5 ref6">5, 6</xref>
        ], MDB-tree [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] and
Rtree [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. In this paper we introduce a top- search algorithm over the next
multidimensional index – Grid file.
      </p>
      <p>
        In [
        <xref ref-type="bibr" rid="ref12 ref13">12, 13</xref>
        ] it was shown that the top- search over multidimensional indexes
(MDB-tree, R-tree, R*-tree) is faster over local data than over a combination of
multiple indexes. The MDB-tree can hold all types of ordered attributes but the query
cannot hold any subset of attributes. The R-tree structure allows a query to contain
any subset of attributes but the metrics used in the R-tree requires having the
numbered attributes only. The reason why we employed a grid file for the top- search
was the elimination of the limitations along with the preservation of the advantages of
the mentioned indexes.
      </p>
      <p>This paper is organized as follows. Section 2 presents the related work. Section 3
formalizes the problem of the top- search over our user preference model. Section 4
presents the main contribution of this paper – the top- search over grid file. Section 5
reports the experiments results comparing the top- search performance over several
index structures. Section 6 concludes this paper.</p>
    </sec>
    <sec id="sec-2">
      <title>2 Related work</title>
      <p>
        The top- search was introduced by R. Fagin [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] as a problem of finding best
objects according to a monotone aggregation function over distributed ordered lists of
attribute values. The original Threshold algorithm (TA) [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] has many improvements
and modifications for the similar distributed environment, e. g. [
        <xref ref-type="bibr" rid="ref1 ref2 ref4 ref6">1, 2, 4, 6</xref>
        ]. We call
them the TA-like algorithms.
      </p>
      <p>
        The idea of the top- search over data stored in several indexes was considered
also for local data, especially inside a RDBMS, e. g. [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. These approaches are
concerned with augmenting the query optimizer to consider rank-joins (similar to TA)
during a plan evaluation. Optimization can be effective especially in case of very
selective attributes. The rank-join algorithm requires ordered data on input similarly
to the middleware algorithms.
      </p>
      <p>
        The idea of using R-tree for top- search is already presented in [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] where the
algorithm incremental nearest neighbour is exploited for that purpose. Nevertheless,
this approach does not offer a query as complex as we offer in our query model.
      </p>
      <p>
        Originally in the top- query, the simple monotone aggregation function was
considered only [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. The query composed of local preferences and monotone combination
function (resulting in non-monotone aggregation function) was introduced in [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. In
[
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] it was shown that the simulations of sorted accesses using separated indexes for
each attribute allow using TA-like algorithms.
      </p>
      <p>
        The algorithm in [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] does a top- search with an arbitrary non-monotone query
analyzing the aggregation function with numerical methods. The algorithm supposes
that the numerical methods can analyze any aggregation function over any domain
sub-region (to find the maximum and possibly recognize monotonicity). In our
opinion this analysis is rather difficult to do in a reasonable time. Note that this approach
uses multiple indexes.
      </p>
      <p>
        The grid file was introduced in [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. In many papers the grid file is considered to
be a dynamic index with a directory structure mapping grid windows to the disk pages
[
        <xref ref-type="bibr" rid="ref11 ref15 ref7">7, 11, 15</xref>
        ]. In our pilot grid file implementation we considered static data only, thus
we made some simplifications (see Section 4). First, we made the numbering of grid
windows that can substitute the presence of directory structure and dramatically
decrease the number of accesses, thus making most objects accessible in 1 I/O. Second,
unlike the original grid file we employed the overflow pages to avoid dense grid
structure with many empty windows over possibly skew data. We analyzed several
bulk loading techniques [
        <xref ref-type="bibr" rid="ref3 ref8 ref9">3, 8, 9</xref>
        ]. The STR algorithm [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] has the best results for our
top- search.
      </p>
    </sec>
    <sec id="sec-3">
      <title>3 Top- search problem definition</title>
      <p>For a given set of objects we have to find most preferred objects for the user.
Each object has the same attributes with values from
attribute domains respectively (i.e. for all ). Query,
i.e. input obtained from the user, consists of fuzzy functions (or less if
user does not consider all attributes) and a monotone combination function . The
overall value of object is . For example, if is a
weighted sum, user is expected to specify only nonnegative weights – one for each
considered attribute to specify a non-descending combination function. Then we have:
where are the weights. The bigger the overall value, the more preferred the
object is to user. The output is a list of objects from ordered from the most
preferred objects to the less preferred ones.</p>
    </sec>
    <sec id="sec-4">
      <title>4 Grid file</title>
      <p>
        The grid file [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] is an index structure for multidimensional points designed to store
the data on disk pages. Grid file is based on slicing space in each dimension, i. e. an
attribute domain, to get a multidimensional grid. For the formal description we
introduce the following notation. Partition is
determined by a sequence of intervals in each dimension. Each ( -th) sequence
consists of disjunctive intervals such that . Picking one interval in
each dimension specifies a window . Each window is mapped to
one data page on disk (these pages are called primary pages). The grid file contains as
many primary pages as windows. All data pages have the same fixed size (i.e. the
same fixed capacity). Overfilled windows are handled by creating a linked chain of
overflow pages.
      </p>
      <p>On the other hand, the grid file may contain empty windows. Each empty window
refers to an empty primary page. Reading empty pages (e. g. during query evaluation)
is avoided by a set of numbers of non-empty windows held in memory. The windows
are numbered in a fashion shown on Figure 2. Since we have a static grid, the
mapping between a window and its number is easy to compute without the need of a
directory structure. The extension of this idea to more dimensions is straightforward.</p>
      <p>
        We create the grid file with bulk loading algorithm STR [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. Page capacity and the
number of objects in determine the final number of windows (primary pages). In a
-dimensional space the -th root of the number of windows determines the number
of intervals in each dimension. Each dimension is partitioned into intervals with the
same number of objects falling in them. Since real data is rarely distributed uniformly
we reduce the number of overfilled windows by increasing the number of windows by
the multiplication with appropriate filling factor (we use filling factor 1.3). After the
bulk loading of input data we are not restricted from adding more objects – it simply
leads to higher utilization of pages and possibly to some new overflow pages.
4.1
      </p>
      <p>
        Top-k search over grid file
A contribution of this paper is a top- search algorithm over grid file. As shown in the
experiments, this approach is much more effective than B+-trees based approach and
it is comparable with the top- search over R-tree [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ].
      </p>
      <p>
        Since each object can be represented by the point in
-dimensional space (note that is the function mapping objects
to -dimensional points), the set of objects can be stored in multidimensional index
such as grid file [
        <xref ref-type="bibr" rid="ref8 ref9">8, 9</xref>
        ]. Grid file does not require attribute domains to be sets of
numbers. It can handle different types of attributes at once. For example the first attribute
can be price represented by decimal numbers while the second attribute can be a
manufacturer represented by strings (with alphabetical ordering). Grid file treats
attribute domains separately therefore they are not required to have any common
property. Attribute domain just needs to be an ordered set.
      </p>
      <p>For searching top- objects over a grid file we developed algorithm similar to the
breadth first search in graphs. For formal description of our algorithm some concepts
need to be defined first.</p>
      <sec id="sec-4-1">
        <title>Definition 1: Point is -dimensional vector</title>
      </sec>
      <sec id="sec-4-2">
        <title>Having and point such that</title>
      </sec>
      <sec id="sec-4-3">
        <title>Definition 2: A window is defined as an</title>
        <p>an interval within for all
. Moreover for all
because . Since combination
funcis monotone (non-descending in each parameter) we get .
Lemma 2: If
object within
holds</p>
      </sec>
      <sec id="sec-4-4">
        <title>Proof: directly from Lemma 1 and the transitivity of relation .</title>
        <p>Note that window in a 2-dimensional grid has at most 4 neighbour windows – top,
bottom, left and right. Window in the corner of the gird has two neighbour windows.</p>
        <p>For the top- search over a grid file we need to know how to evaluate objects and
also grid windows. For this purpose we define aggregation function giving the
overall value for an object and the maximal possible overall value for any object in a
grid window.</p>
        <p>Definition 4: Function
defined as follows:
for all
where
where
if
if</p>
        <p>OR
is a set of windows of grid file is</p>
      </sec>
      <sec id="sec-4-5">
        <title>Preferential top- search algorithm over grid file:</title>
        <p>Input: grid file containing objects from S, fuzzy
functions f1,...,fm, combination function C and number k
Output: ordered list of k objects with the highest value
of the h function
1. queue = empty priority queue ordered by the value of
the h function of its elements in descending order
2. result = empty list of objects
3. for each local extreme of the function h do
a. choose arbitrary one window W containing the
extreme
b. if queue does not contain W then put W into queue
and label W as visited window
4. while the result does not contain k objects do
a. let E be the first element of the queue, remove E
from the queue
b. if E is a window then
i. add all objects within E to the queue
ii. add all not visited neighbour windows of E to
the queue and label them as visited windows
c. if E is an object then add it at the end of the
result
5. return result</p>
        <p>The estimation of time and space complexity can be reduced to an estimation of the
number of visited windows, which is highly dependent on the grid partition, data
distribution and query. The only estimation we can make are the lower and upper
bounds, which is not very rewarding. In the best case we get the top- objects after
processing one window – the first one in the queue containing global extreme. In the
worst case all the windows must be read – typically when a high or low
discriminating fuzzy functions or fuzzy functions containing many local extremes are obtained
from user. Fuzzy functions with many local extremes are not common in a queries
made by people.</p>
        <p>Labeling visited windows can be realized by maintaining a set of numbers of
visited windows starting with an empty set. Avoiding repetitive reading of visited
windows is implemented the same way as avoiding reading of empty windows – by
maintaining a set of window numbers in memory.
4.2 Correctness of the top- search over grid file
The proof of correctness of presented algorithm can be reduced (without impact on
generality) to the situation with just one local extreme of function . If we prove that
it works for the case of one local extreme then the generalization to more extremes
can go as follows: we can prepare as many priority queues as windows with local
extremes in step 3. Then in step 4.a we can pick the priority queue with the highest
value of its first element and continue without any other changes. Using separated
priority queues for each starting window picked in step 3 is not necessary. The same
effect can be achieved by one priority queue managing windows of all local extremes
because on the top there is always an element with the highest value from all top
elements in imaginary separated priority queues.</p>
        <p>Let us focus on one local extreme of the function . First of all we will show that
the value of the first element in priority queue is non-ascending. Using mathematic
induction we will show that each time the first element is removed from priority
queue, the new top element of the priority queue (i.e. in the next iteration of while
cycle) has lower or equal value to the previous top element.</p>
        <p>If the top element in the priority queue is an object then the condition holds
trivially, since no new element is added into priority queue and the next top element was
already in the priority queue in previous iteration.</p>
        <p>Let’s assume that there is a window at the top of the priority queue. We have to
show that all new elements added into priority queue in steps 4.b.i and 4.b.ii have the
overall value lower or equal to the window just removed from the top. For better
imagination we will use the example on Figure 4.</p>
        <p>The first induction step is as follows: at the beginning, the priority queue contains
just one window – the one containing a local extreme of function . Window is
to be removed from the queue directly in the first iteration of while cycle (step 4).
After that, the algorithm inserts the objects within window and its neighbour
windows , , and to the priority queue. In Lemma 1 we showed that objects
belonging to window have the overall value lower or equal to the overall value of
window . Trivially, the neighbour windows , , , do not have the overall
value greater than window because the algorithm started with window containing the
only local extreme.</p>
        <p>For the second induction step we assume the following induction assumption: in
each of previous iterations of while cycle, the overall value of the top element in the
priority queue decreases or does not change. Let window (Figure 4 on the right) be
the first element in the queue. After removing the window from the priority queue,
the objects from E and not visited neighbour windows ( , , , ) are inserted into
the priority queue. In each dimension there is one direction in which the respective
fuzzy function is non-descending and the opposite direction oriented off the local
extreme in which the fuzzy function is non-ascending. In the example on Figure 4 the
local extreme is somewhere in the top left corner. Therefore we can trivially say that
, , , , and
. We are left to show that windows and have been already visited
and therefore they are not to be inserted to priority queue now. From the induction
assumption we get that window was added to priority queue as neighbour when
either window or was removed from the top. Without impact on generality let us
suppose that window is the removed window. Since we know that window has
been already visited we are left to discuss window . Since window has higher
value than window and is its neighbour, from the induction assumption we get
that window must have been visited before . Moreover only top windows from the
priority queue are processed. Therefore window must have been processed before
window and window must have been added into priority queue when window
was being processed. Hence windows L and M had been visited before window E was
processed and are not inserted into the priority queue.</p>
        <p>Although we described the second induction step on an example in a 2-dimensional
space the generalization to more dimensions is straightforward. Even in 2D we can
imagine a situation slightly different from the one drawn on Figure 4 on the right. Let
us imagine the following change: . In this situation window has only
one neighbour with higher overall value – window . The discussion for this case is
even simpler. From the induction assumption we know that window must have
been visited prior to window E.</p>
        <p>Since value of the element at the top of the priority queue is non-ascending the first
object that appears at the top is the best object of all. Each object which would appear
in the priority queue later will be at most as good as any object in the result set. Since
we look at all neighbour windows, processing the rest of the priority queue leads to
acquiring all objects within grid file in order from the best to the worst.</p>
        <p>Note that the presented grid file expansion strategy in the top- search works
correctly for our user preferences model, however it cannot be used for arbitrary
aggregation function in general. For arbitrary aggregation function it requires a
modification of the neighbour windows definition to two windows with a common point and it
leads to exponentially more priority queue insertions according to number of
dimensions than in the presented algorithm.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>5 Experiments</title>
      <p>Average time of top- query evaluation is the basic measure we surveyed. We used a
real data set containing approximately 27 000 flat or house advertisements in Slovakia
having 6 attributes: price, area, floor, the highest floor of building, year of
approbation and the number of rooms. Since the real data set was small we generated bigger
pseudo real sets by generation of several similar objects for each one from the original
set. This way we generated two sets, one with about 550 000 objects (the 20-multiple
set) and second one with about 2 700 000 objects (the 100-multiple set).</p>
      <p>
        We compared the following approaches for top- search problem: grid file based
approach, R-tree and R*-tree based approach [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ], local TA on B+-trees [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] and table
scan (on heap file).
      </p>
      <p>
        There are several algorithms based on ordered lists presented in [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. All of them
work with distributed data and sorted access. Moreover the original TA requires also
the random access. Since we presuppose only locally accessible data (not distributed)
we slightly adapted the TA in the following way: each B+-tree which represents one
ordered list (providing sorted access for one attribute) will contain all the data i.e.
values of all attributes. Thus no random access is necessary because one sorted access
to any ordered list provides complete information about all attribute values of one
object. Such version of TA does not longer suffer from the handicap of distributed
data. We made a small experiment which showed that algorithms NRA [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] and
original TA are significantly less efficient than the local version of TA. Due to this
handicap we have not involved algorithms NRA and original TA to the tests.
      </p>
      <p>Each of the tests consists of the same set of 1100 random queries (i.e. about 200
random queries containing gradually 2, 3, 4, 5 and all 6 attributes). Not all -attribute
queries consist of the same attributes.</p>
      <p>All of the compared approaches manage data file on disk differently. The page size
is the only adjustable parameter common to all of them. Since we wanted to compare
them objectively we had to find the most suitable page size for each one. For the
brevity we do not present graphs showing the time dependency on page size. We
found out that the best page sizes for top- search over 20-multiple set are the
following: 1 kB for R-tree, 2 kB for R*-tree, 8 kB for grid file, 4 MB for heap file (table
scan) and 64 kB for B+-trees (local TA). For the 100-multiple set we found out the
following: 2 kB for R-tree, 1 kB for R*-tree, 4 kB for grid file, 2 MB for heap file
(table scan) and 128 kB for B+-trees (local TA). We strongly recommend to do such a
survey for all application domains and not to consider these results to be universal.
Different size of objects leads to a different capacity of page sizes and probably a
different best page sizes. We compared average time of top- query just for the best
page sizes.</p>
      <p>On the left graphs we see that number of attributes in query has a very low impact
on time of table scan and very high impact on time of local TA. Moreover we can say
that table scan is significantly less efficient than R-tree, R*-tree and grid file based
approaches. The local TA is quite efficient for queries with only 2 attributes. Local
TA loses its efficiency when 3 or more attributes are required.</p>
      <p>
        R-tree, R*-tree and grid file based approaches seem to be faster therefore the
graphs on the right bring the detailed look just on them. We can see that R*-tree
offers a better efficiency than grid file in all cases. Moreover R*-tree with normalized
data does not offer better search performance than R*-tree with original data. We did
not use R-tree with normalized data because normalization of data has no effect when
quadratic split algorithm is used [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ].
6
      </p>
    </sec>
    <sec id="sec-6">
      <title>Conclusion</title>
      <p>In this paper we introduced the top- search algorithm over grid file. Grid file is a
multidimensional index structure in which we can store objects with arbitrary ordered
attributes (numbers, strings, hierarchies) and which allows using a query with any
subset of attributes.</p>
      <p>Grid file organizes data by means of multidimensional intervals (windows) which
are used also in R-tree as hyper-rectangles of nodes. In grid file there is no hierarchy
or overlaps as it is in case of nodes of R-tree. Hence there was a question: can grid file
offer better top- search performance than R-tree or R*-tree? It would be premature
to say no just because our introductory tests showed that the top- search over R*-tree
is faster. Our grid file implementation is quite simple. We have found many overflow
pages and many empty windows because of the real data distribution. The results are
quite promising and encourage us to look for more sophisticated ways of creating and
organizing grid file.</p>
    </sec>
    <sec id="sec-7">
      <title>Acknowledgement</title>
      <sec id="sec-7-1">
        <title>This work was partially supported by VEGA 1/0832/12.</title>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Akbarinia</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pacitti</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Valduriez</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Best Position Algorithms for Top-k Queries</article-title>
          . In
          <string-name>
            <surname>VLDB</surname>
          </string-name>
          , (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Bast</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Majumdar</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schenkel</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Theobald</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Weikum</surname>
          </string-name>
          , G.:
          <article-title>IOTop-k: Index-Access Optimized Top-k Query Processing</article-title>
          . In
          <string-name>
            <surname>VLDB</surname>
          </string-name>
          , (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Bercken</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Seeger</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>An Evaluation of Generic Bulk Loading Techniques</article-title>
          .
          <source>Proceedings of the 27th International Conference on Very Large Data Bases, ISBN:1-55860-804-4</source>
          , pp.
          <fpage>461</fpage>
          -
          <lpage>470</lpage>
          , (
          <year>2001</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Fagin</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lotem</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Naor</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Optimal Aggregation Algorithms for Middleware</article-title>
          .
          <source>Proc. ACM PODS</source>
          ,
          <year>2001</year>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Gurský</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Towards better semantics in the multifeature querying</article-title>
          .
          <source>Proceedings of Dateso</source>
          <year>2006</year>
          ,
          <source>ISBN 80-248-1025-5</source>
          , pages
          <fpage>63</fpage>
          -
          <lpage>73</lpage>
          (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Gurský</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pázman</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vojtáš</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>On supporting wide range of attribute types for top-k search</article-title>
          .
          <source>Computing and Informatics</source>
          , Vol.
          <volume>28</volume>
          , no.
          <issue>4</issue>
          ,
          <year>2009</year>
          , ISSN 1335-
          <issue>9150</issue>
          , p.
          <fpage>483</fpage>
          -
          <lpage>513</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Kumar</surname>
          </string-name>
          , A.:
          <article-title>G-tree: a new data structure for organizing multidimensional data. IEEE Transactions on knowledge and data engineering</article-title>
          , ISSN:
          <fpage>1041</fpage>
          -
          <lpage>4347</lpage>
          , pp.
          <fpage>341</fpage>
          -
          <lpage>347</lpage>
          , vol.
          <volume>6</volume>
          ,
          <string-name>
            <surname>issue</surname>
            <given-names>2</given-names>
          </string-name>
          , (
          <year>1994</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Leutenegger</surname>
            ,
            <given-names>S. T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nicol</surname>
            ,
            <given-names>D. M.</given-names>
          </string-name>
          :
          <article-title>Efficient Bulk-Loading of Grid files. IEEE Transactions on knowledge and data engineering</article-title>
          , ISSN:
          <fpage>1041</fpage>
          -
          <lpage>4347</lpage>
          , vol.
          <volume>9</volume>
          , no.
          <issue>3</issue>
          , (
          <year>1997</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Leutenegger</surname>
          </string-name>
          , S.T.;
          <string-name>
            <surname>Lopez</surname>
            ,
            <given-names>M.A.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Edgington</surname>
            ,
            <given-names>J.:</given-names>
          </string-name>
          <article-title>STR: a simple and efficient algorithm for R-tree packing</article-title>
          .
          <source>Proceedings of the 13th International Conference on Data Engineering, ISBN: 0-8186-7807-0</source>
          , pp.
          <fpage>497</fpage>
          -
          <lpage>506</lpage>
          , (
          <year>1997</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Li</surname>
            ,
            <given-names>C</given-names>
          </string-name>
          , Chang,
          <string-name>
            <given-names>K.</given-names>
            ,
            <surname>Ilyas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I.F.</given-names>
            ,
            <surname>Song</surname>
          </string-name>
          ,
          <string-name>
            <surname>S.:</surname>
          </string-name>
          <article-title>RankSQL: Query Algebra and Optimization for Relational Top-k Queries</article-title>
          .
          <source>SIGMOD</source>
          (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Nievergelt</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hinterberger</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sevcik</surname>
            ,
            <given-names>K. C.</given-names>
          </string-name>
          :
          <article-title>The Grid File: An Adaptable, Symmetric Multikey File Structure</article-title>
          .
          <source>ACM Transactions on Database Systems</source>
          , pp.
          <fpage>33</fpage>
          -
          <lpage>71</lpage>
          , vol.
          <volume>9</volume>
          ,
          <string-name>
            <surname>issue</surname>
            <given-names>1</given-names>
          </string-name>
          , (
          <year>1984</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Ondreička</surname>
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pokorný</surname>
            <given-names>J.: Efficient</given-names>
          </string-name>
          <string-name>
            <surname>Top-K Problem</surname>
          </string-name>
          <article-title>Solvings for More Users in TreeOriented Data Structures</article-title>
          .
          <source>Proceedings of Signal-Image Technology &amp; Internet-Based Systems, ISBN: 978-1-4244-5740-3</source>
          , pp.
          <fpage>345</fpage>
          -
          <lpage>354</lpage>
          (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Šumák</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gurský</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Top-k Search in Product Catalogues</article-title>
          .
          <source>Proceedings of Dateso</source>
          <year>2011</year>
          ,
          <source>ISBN 978-80-248-2391-1</source>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>12</lpage>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Tsaparas</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Palpanas</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kotidis</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Koudas</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Srivastava</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Ranked Join Indices</article-title>
          . ICDE, pp.
          <fpage>277</fpage>
          -
          <lpage>288</lpage>
          (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Whang</surname>
          </string-name>
          , K.-Y.,
          <string-name>
            <surname>Krishnamurthy</surname>
            ,
            <given-names>R.: The</given-names>
          </string-name>
          <string-name>
            <surname>Multilevel Grid File - A Dynamic Hierarchical</surname>
          </string-name>
          <article-title>Multidimensional File Structure</article-title>
          .
          <source>Proceedings of Database Systems for Advanced Applications, ISBN 981-02-1055-8</source>
          , pp.
          <fpage>449</fpage>
          -
          <lpage>459</lpage>
          , (
          <year>1992</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Xin</surname>
            , D., Han,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chang</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          :
          <article-title>Progressive and Selective Merge: Computing Top-K with AdHoc Ranking Functions</article-title>
          .
          <source>SIGMOD</source>
          (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>