Claims
- 1. A computer-implemented method of reducing the number of index entries for use in an index associated with an object, comprising:
determining a number of index entries for the object; if the number of index entries does not exceed a threshold number, storing the index entries in the index; and if the number of index entries exceeds the threshold number, storing an indicator of the object in a pool storage area.
- 2. The computer-implemented method of claim 1, wherein the index is a grid index comprised of a plurality of grid cells, the object is a geometric shape, and said determining a number of index entries is based on how many cells the object overlaps.
- 3. The computer-implemented method of claim 2, further comprising
selecting the threshold number of grid cells that a geometric shape may overlap; and establishing the pool storage area for storing indicators of geometric shapes overlapping the number of grid cells exceeding the threshold number.
- 4. The computer-implemented method of claim 2, wherein the geometric shapes are from a database of geometric shapes.
- 5. The computer-implemented method of claim 4, wherein an indicator for each geometric shape in the database that overlaps a number of grid cells exceeding the threshold number is stored in the pool storage area.
- 6. The computer-implemented method of claim 2, wherein the grid index includes a data structure and if one of said geometric shapes is placed in the pool storage area, an identifier representative of such geometric shape is placed in the data structure of the grid index.
- 7. The computer-implemented method of claim 2, wherein the grid index is a multilevel grid index and wherein the threshold number of grid cells is related to the coarsest level of the grid index.
- 8. The computer-implemented method of claim 2, further comprising:
subsequent to the storing of an indicator of a geometric shape in the pool storage area and in response to a query, evaluating the grid index to produce a group of one or more possible candidates based on grid cells that respective geometric shapes in the index overlap; adding the geometric shapes stored in the pool storage area to said group of possible candidates to produce an interim group of possible candidates; and filtering the interim group of possible candidates by comparing approximations of the geometric shapes of the interim group of possible candidates with a query area specified in the query to produce filtered candidates.
- 9. The computer-implemented method of claim 8, wherein the approximations of the possible candidates are minimum bounded rectangles (MBRs) of the possible candidates, and said filtering is performed by comparing for each possible candidate, the MBR of the candidate with the query area and designating the candidate as a final candidate if the MBR of the candidate and the query area overlap.
- 10. The computer-implemented method of claim 9, further comprising determining for each final candidate if the geometric shape corresponding to the final candidate overlaps the query area.
- 11. A computer program for reducing the number of index entries for use in an index for indexing an object, the computer program having program instructions executable by a computer and recorded on a computer-readable medium, the computer program comprising:
program instructions for determining a number of index entries for the object; program instructions for storing an indicator of the object in the index if the number of index entries does not exceed a threshold number; and program instructions for storing an indicator of the object in a pool storage area if the number of index entries exceeds the threshold number.
- 12. The computer-program of claim 11, wherein the index is a grid index comprised of a plurality of grid cells and the objects are geometric shapes, and said determining a number of index entries is based on how many cells the object overlaps.
- 13. A computer-implemented method of querying an index of first objects comprised of a plurality of index entries and a pool of second objects, the method comprising:
evaluating the index of the first objects to produce a group of one or more possible candidates based on whether one or more index entries of the first objects satisfy a query; adding second objects from the pool to said group of possible candidates to produce an interim group of possible candidates: filtering the interim group of possible candidates by comparing approximations of the candidates of the interim group with the query to produce filtered candidate objects; and determining if the filtered candidate objects satisfy the query by comparing the first and second objects corresponding to the filtered candidate objects with the query.
- 14. The computer-implemented method of claim 13, wherein the index is a grid index comprised of a plurality of grid cells, the first and second objects are geometric shapes, and the second objects are larger than the first objects.
- 15. The computer-implemented method of claim 14, wherein all geometric shapes from the pool are added to said group of possible candidates to produce the interim group of possible candidates.
- 16. The computer-implemented method of claim 14, wherein the approximations of the candidate objects are minimum bounding rectangles of the geometric shapes corresponding to the candidate objects.
- 17. The computer-implemented method of claim 16, wherein said determining if the filtered candidate objects satisfy the query includes comparing the geometric shapes corresponding to the filtered candidate objects with a query area specified in the query.
- 18. A computer program for querying an index of first objects comprised of a plurality of cells and a pool of second objects, the computer program having program instructions executable by a computer and recorded on a computer-readable medium, the computer program comprising:
program instructions for evaluating the index of the first objects to produce a group of one or more possible candidates based on cells designated in a query that respective first objects in the index overlap; program instructions for adding second objects from the pool to said group of possible candidates to produce an interim group of possible candidates: program instructions for filtering the interim group of possible candidates by comparing the query with approximations of the candidates of the interim group with the query to produce filtered candidate objects; and program instructions for determining if the filtered candidate objects satisfy the query by comparing the first and second objects corresponding to the filtered candidate objects with the query.
- 19. The computer program of claim 18, wherein the index is a grid index comprised of a plurality of grid cells, the first and second objects are geometric shapes, and the second objects are larger than the first objects.
- 20. The computer program of claim 19, wherein the approximations of the candidate objects are minimum bounding rectangles of the geometric shapes corresponding to the candidate objects, and wherein said program instructions for determining if the filtered candidate objects satisfy the query include program instructions for comparing the geometric shapes corresponding to the filtered candidate objects with a query area specified in the query.
- 21. A computer system for indexing objects, comprising:
an index comprised of a plurality of index entries for storing indicators of first objects; and a pool storage area for storing an indicator of second objects that are not stored in the index, wherein a number of index entries for the second objects if stored in the index is greater than a threshold number.
- 22. The computer system of claim 21, wherein the index is a grid index comprising a plurality of grid cells, the first and second objects are geometric shapes.
- 23. The computer system of claim 22, wherein the pool storage area is for storing indicators of geometric shapes that overlap more than a preselected threshold number of grid cells if the grid index is laid over said geometric shapes.
- 24. The computer system of claim 23, wherein the grid index contains stored geometric shapes and wherein the pool storage area contains said larger geometric shapes.
- 25. The computer system of claim 24, wherein the grid index includes a data structure and for each geometric shape in the pool storage area there is an identifier in the data structure of the grid index.
- 26. The computer system of claim 25, wherein the grid index is a multi-level grid index.
- 27. The computer system of claim 23, further comprising:
means for determining how many grid cells a geometric shape overlies; means for storing the shape in the grid index if a geometric shape overlaps a number of cells that does not exceed the threshold number; and means for storing the shape in the pool storage area if a geometric shape overlaps a number of grid cells exceeding the threshold number.
- 28. The computer system of claim 27, further comprising:
means for querying the grid index by initially evaluating the grid index to produce a group of one or more possible candidates based on the grid cells that respective geometric shapes in the index overlap; means for querying the pool by adding the geometric shapes stored in the pool to said group of possible candidates to produce an interim group of possible candidates; means for detecting geometric shapes in the grid index and pool that overlap a query area by filtering the interim group of possible candidates by comparing minimum bounding rectangles of the interim group of possible candidates with the query area to produce filtered candidates; and means for determining geometric shapes among the filtered candidates that overlap the query area.
- 29. A computer system for indexing geometric shapes, comprising:
grid index means for storing geometric shapes; and means for storing a pool of geometric shapes which are larger than the geometric shapes stored in the grid index means.
- 30. The computer system of claim 29, wherein the grid index means includes a plurality of grid cells, the computer system further comprising:
means for storing the shape in the grid index if a geometric shape overlaps a number of grid cells that does not exceed a threshold number; and means for storing the shape in the pool if the geometric shape overlaps a number of grid cells that exceeds the threshold number.
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] The present application is related to U.S. application Ser. No. ______, filed May 10, 2002, entitled “Systems, Methods, and Computer Program Products to Improve Indexing of Multidimensional Databases,” (docket no. SVL920010083), the entire contents of which are incorporated herein by reference.
[0002] The present application is also related to U.S. application Ser. No. ______, filed May 10, 2002, entitled “Systems, Methods, And Computer Program Products To Reduce Computer Processing In Grid Cell Size Determination For Indexing Of Multidimensional Databases,” (docket no. SVL920020016), the entire contents of which are incorporated herein by reference.