now FP set-ups (first need to create fp-content/index/); it won't work anyway

This commit is contained in:
real_nowhereman 2008-09-07 14:43:17 +00:00
parent b3e97edd66
commit 8df42deeba
3 changed files with 50 additions and 21 deletions

View File

@ -2508,7 +2508,7 @@ class SBPlusTree extends BPlusTree {
function SBPlusTree($infile, $stringfile, function SBPlusTree($infile, $stringfile,
$maxstring = 256, $maxstring = 256,
$pos=null, $nodesize=null, $keylen=null) { $pos=null, $nodesize=null, $keylen=null) {
parent::BPlusTree(); parent::BPlusTree($infile, $maxstring, $pos, $nodesize, $keylen);
$this->stringfile = $stringfile; $this->stringfile = $stringfile;
$this->maxstring = $maxstring; $this->maxstring = $maxstring;
} }

View File

@ -17,11 +17,11 @@
$varname = $this->_varname; $varname = $this->_varname;
if (!file_exists($this->_cachefile)) { if (!file_exists($this->_cachefile.'.dat')) {
trigger_error ("Can't find index '{$this->_cachefile}'", E_USER_ERROR); trigger_error ("Can't find index '{$this->_cachefile}'", E_USER_ERROR);
} }
$this->_tree = caching_SBPT( $this->_tree = new caching_SBPT(
fopen($this->_cachefile.'.dat', 'r'), fopen($this->_cachefile.'.dat', 'r'),
fopen(INDEX_DIR.'index.strings.dat', 'r'), fopen(INDEX_DIR.'index.strings.dat', 'r'),
$this->_offset, $this->_offset,
@ -38,6 +38,10 @@
return $this->_tree->walker(); return $this->_tree->walker();
} }
function length() {
return $this->_tree->length();
}
function save() { function save() {
trigger_error('Cannot save() a cache', E_USER_ERROR); trigger_error('Cannot save() a cache', E_USER_ERROR);

View File

@ -6,7 +6,7 @@
* opens the index belonging to a given category * opens the index belonging to a given category
* @params int $id_cat * @params int $id_cat
*/ */
function entry_indexer($id_cat=0) { function entry_cached_index($id_cat=0) {
$this->_cachefile = INDEX_DIR.'index-'.$id_cat; $this->_cachefile = INDEX_DIR.'index-'.$id_cat;
parent::cache_filelister(); parent::cache_filelister();
} }
@ -36,40 +36,57 @@
// as SBPlus trees: the string-key, string-value pair // as SBPlus trees: the string-key, string-value pair
// will be returned // will be returned
if ($oldfile = file_exists($f=INDEX_DIR.'index-0.dat'))
$mode = 'r+b';
else
$mode = 'w+b';
$this->indices[0] = new SBPlusTree( $this->indices[0] = new SBPlusTree(
fopen(INDEX_DIR.'index-0.dat', 'r+'), fopen(INDEX_DIR.'index-0.dat', $mode),
fopen(INDEX_DIR.'index.strings.dat', 'r+'), fopen(INDEX_DIR.'index.strings.dat', $mode),
$this->_offset, $this->_offset,
$this->_chunksize, $this->_chunksize,
$this->_keysize $this->_keysize
); );
if ($oldfile)
$this->indices[0]->open();
else
$this->indices[0]->startup();
} }
function &get_index($cat=0) { function &get_index($cat=0) {
if (!isset($this->indices[$cat])) { if (!isset($this->indices[$cat])) {
$f = INDEX_DIR.'index-'.$cat.'.dat';
if ($oldfile = file_exists($f))
$mode = 'r+b';
else $mode = 'w+b';
$this->indices[$cat] =& new BPlusTree( $this->indices[$cat] =& new BPlusTree(
fopen(INDEX_DIR.'index-'.$cat.'.dat', 'r+'), fopen($f, $mode),
$this->_offset, $this->_offset,
$this->_chunksize, $this->_chunksize,
$this->_keysize $this->_keysize
); );
if ($oldfile)
$this->indices[$cat]->open(); $this->indices[$cat]->open();
else $this->indices[$cat]->startup();
} }
return $this->indices[$cat]; return $this->indices[$cat];
} }
function add($entry) { function add($id, $entry) {
$key =& entry_timetokey($entry['date']); $key =& entry_idtokey($id);
$val = $entry['subject']; $val = $entry['SUBJECT'];
$main =& $this->get_index(); $main =& $this->get_index();
$seek = $main->setitem($key, $val); $seek = $main->setitem($key, $val);
if (isset($entry['categories']) && is_array($entry['categories']) { if (isset($entry['CATEGORIES']) && is_array($entry['CATEGORIES'])) {
foreach ($entry['categories'] as $cat) { foreach ($entry['CATEGORIES'] as $cat) {
if (!is_numeric($cat) continue; if (!is_numeric($cat)) continue;
$this_index =& $this->get_index($cat); $this_index =& $this->get_index($cat);
$this_index->setitem($key, $seek); $this_index->setitem($key, $seek);
} }
@ -83,9 +100,9 @@
$main =& $this->get_index(); $main =& $this->get_index();
$main->delitem($key); $main->delitem($key);
if (isset($entry['categories']) && is_array($entry['categories']) { if (isset($entry['categories']) && is_array($entry['categories'])) {
foreach ($entry['categories'] as $cat) { foreach ($entry['categories'] as $cat) {
if (!is_numeric($cat) continue; if (!is_numeric($cat)) continue;
$this_index =& $this->get_index($cat); $this_index =& $this->get_index($cat);
$this_index->delitem($key); $this_index->delitem($key);
} }
@ -274,9 +291,15 @@
*/ */
function &entry_init() { function &entry_init() {
global $fpdb; #global $fpdb;
$fpdb->init(); #$fpdb->init();
return $fpdb->_indexer;
static $entry_index = null;
if (is_null($entry_index))
$entry_index=& new entry_index;
return $entry_index;
} }
@ -308,7 +331,7 @@
} }
function entry_idtokey($id) { function entry_idtokey($id) {
return substr($id, 5, 6) . substr($id, 11); return substr($id, 5, 6) . substr($id, 12);
} }
function entry_timetokey($time) { function entry_timetokey($time) {
@ -317,6 +340,8 @@
function entry_list() { function entry_list() {
trigger_error('function deprecated', E_USER_ERROR);
$obj =& entry_init(); $obj =& entry_init();
$entry_arr = $obj->getList(); $entry_arr = $obj->getList();