libdoodle - multi-suffix tree based file search library 0.7.0
Contents
Availability
You can obtain the original author's latest version from http://grothoff.org/christian/doodle/.
libdoodle Jan 1 2010 LIBDOODLE(3)
Bugs
There is at least one known bug, but nobody was able to reproduce it yet. But in general things work
fine. :-)
Description
libdoodle is a library that provides a multi-suffix tree to lookup files. The basic use is to create a
suffix tree, add some keywords (associated with a file), search the tree and finally free the tree.
libdoodle features code to quickly serialize the tree into a compact format.
In order to use libdoodle, client code first creates a tree (passing a callback function that will log
all error messages associated with this tree and the name of the database) using DOODLE_tree_create. The
tree can then be searched using DOODLE_tree_search or DOODLE_tree_search_approx (which requires
additional processing with DOODLE_tree_iterate to walk over the individual results). The tree can be
expanded with new search strings (DOODLE_tree_expand) and existing matches can be removed with
DOODLE_tree_truncate. It is only possible to remove all keywords for a given file. With
DOODLE_getFileAt and DOODLE_getFileCount it is possible to inspect the files that are currently in the
tree (and to check if their respective modification timestamps, useful for keeping track of when an entry
maybe outdated). Finally the tree must be released using DOODLE_tree_destroy. This writes the changes
to the disk and frees all associated resources.
Example code for using the complete libdoodle API can be found in doodle.c. If jni.h was found when
libdoodle was compiled, libdoodle will contain methods that allow Java code to directly use libdoodle.
See org.gnunet.doodle.Doodle for Java code providing an interface to libdoodle and for a sample main
method that demonstrates searching the doodle database from Java.
Legal Notice
libdoodle and doodle are released under the GPL.
Name
libdoodle - multi-suffix tree based file search library 0.7.0
Reporting Bugs
Report bugs to mantis <https://gnunet.org/bugs/> or by sending electronic mail to
<christian@grothoff.org>
See Also
doodle(1), extract(1), libextractor(3)
Synopsis
#include<doodle.h>typedefvoid(*DOODLE_Logger)(void*context,unsignedintlevel,constchar*message,...);typedefstruct{char*filename;unsignedintmod_time;}DOODLE_FileInfo;typedefvoid(*DOODLE_TreeCallback)(constDOODLE_FileInfo*fileinfo,void*arg);unsignedintDOODLE_getFileCount(conststructDOODLE_SuffixTree*tree);constDOODLE_File*DOODLE_getFileAt(conststructDOODLE_SuffixTree*tree,unsignedintindex);structDOODLE_SuffixTree*DOODLE_tree_create(DOODLE_Loggerlog,void*context,constchar*database);voidDOODLE_tree_set_memory_limit(structDOODLE_SuffixTree*tree,size_tlimit);voidDOODLE_tree_destroy(structDOODLE_SuffixTree*tree);intDOODLE_tree_expand(structDOODLE_SuffixTree*tree,constunsignedchar*searchString,constchar*fileName);intDOODLE_tree_truncate(structDOODLE_SuffixTree*tree,constchar*fileName);intDOODLE_tree_dump(FILE*stream,structDOODLE_SuffixTree*tree);intDOODLE_tree_search_approx(structDOODLE_SuffixTree*tree,constunsignedintapprox,constintignore_case,constunsignedchar*ss,DOODLE_ResultCallback*callback,void*arg);intDOODLE_tree_search(structDOODLE_SuffixTree*tree,constunsignedchar*substring,DOODLE_ResultCallback*callback,void*arg);