413 |
(``...:4-6``). |
(``...:4-6``). |
414 |
|
|
415 |
Our current implementation shows only links between documents |
Our current implementation shows only links between documents |
416 |
that are in memory at the same time [screenshot of xupdf, perhaps ref too |
that are in memory at the same time (Fig. [ref-buoyframe]_, |
417 |
(submitted) antont: was thinking the same, it would illustrate this well]. |
discussed in [lukka03xupdf-submitted]_). |
418 |
In the future, we will implement a global distributed index on top of |
In the future, we will implement a global distributed index on top of |
419 |
a distributed hashtable (Section 5). |
a distributed hashtable (Section 5). |
420 |
To find the transclusions of a span, the system will retrieve |
To find the transclusions of a span, the system will retrieve |
421 |
all transclusions of any span with the same prefix (``...:``), then |
all transclusions of any span with the same prefix (``...:``), then |
422 |
sort out those that do not overlap the span in question. |
sort out those that do not overlap the span in question. |
423 |
|
|
424 |
|
.. figure:: buoyframe0.ps |
425 |
|
:label: buoyframe |
426 |
|
|
427 |
|
Our current implementation showing a PDF file with links |
428 |
|
and transclusions. |
429 |
|
|
430 |
Since the problem is to search for overlapping ranges, |
Since the problem is to search for overlapping ranges, |
431 |
the spans themselves can not be used as hashtable keys. |
the spans themselves can not be used as hashtable keys. |
432 |
However, we keep the number of spans with the same prefix |
However, we keep the number of spans with the same prefix |
724 |
getItems(block) -> |
getItems(block) -> |
725 |
set of (key, value) pairs |
set of (key, value) pairs |
726 |
|
|
727 |
This callback processes a block and returns a set of |
This callback analyzes a block and returns a set of |
728 |
hashtable items (key/value pairs) to be placed into the index. |
hashtable items (key/value pairs) to be placed into the index. |
729 |
The Storm pool, in turn, provides |
The Storm pool, in turn, provides |
730 |
the following interface to the application:: |
the following interface to the application:: |
740 |
because binding items to blocks makes it easy for pools |
because binding items to blocks makes it easy for pools |
741 |
to e.g. remove associated items when deleting a block. |
to e.g. remove associated items when deleting a block. |
742 |
|
|
743 |
As an example, the ``getItems()`` method of our Xanalogical |
As an example, the ``getItems()`` method of our Xanalogical storage |
744 |
storage implementation will, for a block containing a document, |
implementation will, for a block containing a document, |
745 |
collect all the spans in a document, and return items |
first collect all the spans in a document. |
746 |
from their scroll blocks' IDs to the spans and their positions |
For each span, it will then return an item mapping the span's scroll |
747 |
in the document. When we want to find the transclusions of |
block id to the span's position in the document. |
748 |
a span, we use ``get()`` to get the items for the ID of |
When we want to find the transclusions of |
749 |
|
a span, we use ``get()`` to find transclusions from |
750 |
that span's scroll block, and load the document blocks referenced |
that span's scroll block, and load the document blocks referenced |
751 |
by the items. |
by the items. |
752 |
|
|