Changeset 349

Show
Ignore:
Timestamp:
04/20/08 04:09:29 (7 months ago)
Author:
jake
Message:

bug fix, clucene is messed up

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/thrudex/src/CLuceneIndex.cpp

    r347 r349  
    5656    } 
    5757 
    58  
    5958    string idx_path = index_root + "/" + index_name; 
    6059    bool   new_index; 
     
    111110 
    112111        ram_prev_directory = shared_ptr<CLuceneRAMDirectory> (new CLuceneRAMDirectory()); 
    113         ram_directory->__cl_addref(); //trick clucene's lame ref counters 
     112        ram_prev_directory->__cl_addref(); //trick clucene's lame ref counters 
    114113 
    115114        ram_bloom     = shared_ptr<bloom_filter> (new bloom_filter(filter_space,1.0/(1.0 * filter_space), random_seed)); 
     
    168167 
    169168        modifier->flush(); 
    170  
     169       
    171170        ram_searcher.reset(); 
    172171 
     172        //shared_ptr<CLuceneRAMDirectory> l_ram_readonly_directory = ram_readonly_directory; 
     173 
    173174        //make a copy of the ram dir since its not thread safe 
    174         ram_readonly_directory = shared_ptr<CLuceneRAMDirectory>(new CLuceneRAMDirectory( ram_directory.get() )); 
     175        ram_readonly_directory.reset( new CLuceneRAMDirectory( ram_directory.get() ), null_deleter() ); 
    175176        ram_readonly_directory->__cl_addref(); //trick clucene's lame ref counters 
    176177 
    177178        ram_searcher.reset(new IndexSearcher( ram_readonly_directory.get() )); 
    178  
    179179 
    180180        //since clucene doesn't use shared_ptr we need to get the 
     
    186186        if(syncing){ 
    187187            //make a copy of the ram dir since its not thread safe 
    188             ram_readonly_prev_directory = shared_ptr<CLuceneRAMDirectory>(new CLuceneRAMDirectory( ram_prev_directory.get() )); 
    189             ram_readonly_prev_directory->__cl_addref(); //trick clucene's lame ref counters 
    190  
     188          ram_readonly_prev_directory = shared_ptr<CLuceneRAMDirectory>(new CLuceneRAMDirectory( ram_prev_directory.get() ), null_deleter() ); 
     189          ram_readonly_prev_directory->__cl_addref(); //trick clucene's lame ref counters 
    191190 
    192191            ram_prev_searcher.reset(new IndexSearcher( ram_readonly_prev_directory.get() )); 
     
    504503    shared_ptr<bloom_filter>        l_ram_bloom; 
    505504    shared_ptr<CLuceneRAMDirectory> l_ram_directory; 
     505    shared_ptr<CLuceneRAMDirectory> l_ram_ro_dir; 
    506506    shared_ptr<set<string> >        l_disk_deletes; 
    507507    shared_ptr<bloom_filter>        l_disk_bloom; 
     
    525525        l_disk_bloom   = disk_bloom; 
    526526 
     527        l_ram_ro_dir.reset( new CLuceneRAMDirectory( l_ram_directory.get() ) ); 
     528        l_ram_ro_dir->__cl_addref(); //trick clucene's lame ref counters 
     529 
    527530        //create new handles 
    528531        ram_directory.reset(new CLuceneRAMDirectory()); 
     
    572575        Directory *dirs[2]; 
    573576 
    574         dirs[0] = l_ram_directory.get(); 
     577        dirs[0] = l_ram_ro_dir.get(); 
    575578        dirs[1] = NULL; 
    576579