From: Chinmay K. <chi...@gm...> - 2008-05-27 10:38:11
|
Hi all, Just got started on CLucene. I was trying to find out how do an addIndexes, so that I can use CLucene for multi-threaded indexing. (If there's a better way than making multiple threads write to their own index in a RAMDirectory, and then adding the indexes together; do tell). My code below seg faults, and I can't figure out why. (It's modified from the example application: the writer is a per-initialized IndexWriter maintaining an index on the file system.) void indexDocs(IndexWriter* writer, char* directory) { DIR* dir = opendir(directory); Directory* RAMDirectories = _CLNEW RAMDirectory[1]; lucene::analysis::standard::StandardAnalyzer an; IndexWriter* ramWriter = _CLNEW IndexWriter(&RAMDirectories[0], &an, true, false); if ( dir != NULL ){ struct dirent* fl; struct fileStat buf; char path[CL_MAX_DIR]; strcpy(path,directory); strcat(path,PATH_DELIMITERA); char* pathP = path + strlen(path); fl = readdir(dir); while ( fl != NULL ){ if ( (strcmp(fl->d_name, ".")) && (strcmp(fl->d_name, "..")) ) { pathP[0]=0; strcat(pathP,fl->d_name); int32_t ret = fileStat(path,&buf); if ( buf.st_mode & S_IFDIR ) { indexDocs(writer, path ); }else{ printf( "adding: %s\n", fl->d_name ); Document* doc = FileDocument( path ); //writer->addDocument( doc ); //CHANGED ramWriter->addDocument(doc); _CLDELETE(doc); } } fl = readdir(dir); } closedir(dir); }else{ printf( "adding: %s\n", directory); Document* doc = FileDocument( directory ); writer->addDocument( doc ); _CLDELETE(doc); } ramWriter->close(); writer->addIndexes((&RAMDirectories)); //Segmentation fault here _CLDELETE(ramWriter); } Help would be greatly appreciated. -- Yours, Chinmay Kulkarni, www.celbits.org +91 99835 25822 Think BIG! |
From: Ben v. K. <bva...@gm...> - 2008-07-04 09:18:22
|
ramdirectories was never intialised. b 2008/5/27 Chinmay Kulkarni <chi...@gm...>: > Hi all, > > Just got started on CLucene. I was trying to find out how do an addIndexes, > so that I can use CLucene for multi-threaded indexing. (If there's a better > way than making multiple threads write to their own index in a RAMDirectory, > and then adding the indexes together; do tell). > > My code below seg faults, and I can't figure out why. (It's modified from > the example application: the writer is a per-initialized IndexWriter > maintaining an index on the file system.) > > > void indexDocs(IndexWriter* writer, char* directory) { > DIR* dir = opendir(directory); > > Directory* RAMDirectories = _CLNEW RAMDirectory[1]; > lucene::analysis::standard::StandardAnalyzer an; > IndexWriter* ramWriter = _CLNEW IndexWriter(&RAMDirectories[0], &an, > true, false); > > if ( dir != NULL ){ > struct dirent* fl; > > struct fileStat buf; > > char path[CL_MAX_DIR]; > strcpy(path,directory); > strcat(path,PATH_DELIMITERA); > char* pathP = path + strlen(path); > > fl = readdir(dir); > while ( fl != NULL ){ > if ( (strcmp(fl->d_name, ".")) && (strcmp(fl->d_name, "..")) ) > { > pathP[0]=0; > strcat(pathP,fl->d_name); > int32_t ret = fileStat(path,&buf); > if ( buf.st_mode & S_IFDIR ) { > indexDocs(writer, path ); > }else{ > printf( "adding: %s\n", fl->d_name ); > > Document* doc = FileDocument( path ); > //writer->addDocument( doc ); //CHANGED > ramWriter->addDocument(doc); > > _CLDELETE(doc); > } > } > fl = readdir(dir); > > } > closedir(dir); > }else{ > printf( "adding: %s\n", directory); > > Document* doc = FileDocument( directory ); > writer->addDocument( doc ); > _CLDELETE(doc); > } > ramWriter->close(); > > writer->addIndexes((&RAMDirectories)); //Segmentation fault here > > > _CLDELETE(ramWriter); > > } > > > Help would be greatly appreciated. > -- > Yours, > Chinmay Kulkarni, > www.celbits.org > +91 99835 25822 > > Think BIG! > > ------------------------------------------------------------------------- > This SF.net email is sponsored by: Microsoft > Defy all challenges. Microsoft(R) Visual Studio 2008. > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ > _______________________________________________ > CLucene-developers mailing list > CLu...@li... > https://lists.sourceforge.net/lists/listinfo/clucene-developers > > |