From c1aea5cc0f7f5a867a500b6e220b2657d6d7c53a Mon Sep 17 00:00:00 2001 From: fc_botelho Date: Wed, 3 May 2006 20:25:41 +0000 Subject: [PATCH] *** empty log message *** --- FAQ.t2t | 7 ++++- README.t2t | 89 +++++++++++++++++++++++++++++++----------------------- 2 files changed, 58 insertions(+), 38 deletions(-) diff --git a/FAQ.t2t b/FAQ.t2t index eb11038..a013867 100644 --- a/FAQ.t2t +++ b/FAQ.t2t @@ -25,7 +25,12 @@ one is executed? the cmph_config_set_hashfuncs. Therefore, the default hash function is reset when you call the cmph_config_set_algo function. - +- What do I do when the following error is got? + - Error: **error while loading shared libraries: libcmph.so.0: cannot open shared object file: No such file ordirectory** + + - Solution: type **export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/** at the shell or put that shell command + in your .profile file or in the /etc/profile file. + %!include: ALGORITHMS.t2t %!include: FOOTER.t2t diff --git a/README.t2t b/README.t2t index c31a917..3cb81b4 100644 --- a/README.t2t +++ b/README.t2t @@ -51,7 +51,7 @@ The CMPH Library encapsulates the newest and more efficient algorithms in an eas %txt% - BMZ Algorithm. A very fast external memory based algorithm for constructing minimal perfect hash functions for sets in the order of billion of keys in linear time. The resulting functions are not order preserving and - can be stored using just 8.1 bits per key. **This algorithm is available just in the CVS for while**. + can be stored using just 8.1 bits per key. %html% - [CHM Algorithm chm.html]. %txt% - CHM Algorithm. An algorithm based on acyclic random graphs to construct minimal @@ -61,6 +61,15 @@ The CMPH Library encapsulates the newest and more efficient algorithms in an eas %html% [Click Here comparison.html] to see a comparison of the supported algorithms. +---------------------------------------- + +==News for version 0.5== + +- A thread safe vector adapter has been added. +- [A new algorithm for sets in the order of billion of keys that requires approximately 8.1 bits per key to store the resulting MPHFs. brz.html] +- All reported bugs and suggestions have been corrected and included as well. + + ---------------------------------------- ==News for version 0.4== @@ -88,29 +97,29 @@ Using cmph is quite simple. Take a look. ``` #include - +#include // Create minimal perfect hash function from in-memory vector int main(int argc, char **argv) -{ +{ // Creating a filled vector - const char *vector[] = {"aaaaaaaaaa", "bbbbbbbbbb", "cccccccccc", "dddddddddd", "eeeeeeeeee", + const char *vector[] = {"aaaaaaaaaa", "bbbbbbbbbb", "cccccccccc", "dddddddddd", "eeeeeeeeee", "ffffffffff", "gggggggggg", "hhhhhhhhhh", "iiiiiiiiii", "jjjjjjjjjj"}; unsigned int nkeys = 10; // Source of keys - cmph_io_adapter_t *source = cmph_io_vector_adapter(vector, nkeys); - + cmph_io_adapter_t *source = cmph_io_vector_adapter((char **)vector, nkeys); + //Create minimal perfect hash function using the default (chm) algorithm. cmph_config_t *config = cmph_config_new(source); cmph_t *hash = cmph_new(config); cmph_config_destroy(config); - + //Find key const char *key = "jjjjjjjjjj"; unsigned int id = cmph_search(hash, key, strlen(key)); fprintf(stderr, "Id:%u\n", id); //Destroy hash cmph_destroy(hash); - free(source); + cmph_io_vector_adapter_destroy(source); return 0; } ``` @@ -120,33 +129,33 @@ Download [vector_adapter_ex1.c examples/vector_adapter_ex1.c]. This example does ``` #include #include - -// Create minimal perfect hash function from in-disk keys using BMZ algorithm +#include + // Create minimal perfect hash function from in-disk keys using BMZ algorithm int main(int argc, char **argv) -{ - //Open file with newline separated list of keys +{ + //Open file with newline separated list of keys FILE * keys_fd = fopen("keys.txt", "r"); cmph_t *hash = NULL; - if (keys_fd == NULL) + if (keys_fd == NULL) { - fprintf(stderr, "File \"keys.txt\" not found\n"); - exit(1); - } + fprintf(stderr, "File \"keys.txt\" not found\n"); + exit(1); + } // Source of keys cmph_io_adapter_t *source = cmph_io_nlfile_adapter(keys_fd); - + cmph_config_t *config = cmph_config_new(source); cmph_config_set_algo(config, CMPH_BMZ); hash = cmph_new(config); cmph_config_destroy(config); - + //Find key const char *key = "jjjjjjjjjj"; unsigned int id = cmph_search(hash, key, strlen(key)); fprintf(stderr, "Id:%u\n", id); //Destroy hash cmph_destroy(hash); - free(source); + cmph_io_nlfile_adapter_destroy(source); fclose(keys_fd); return 0; } @@ -176,26 +185,32 @@ utility. ``` - usage: cmph [-v] [-h] [-V] [-k nkeys] [-f hash_function] [-g [-c value][-s seed] ] [-m file.mph] [-a algorithm] keysfile + usage: cmph [-v] [-h] [-V] [-k nkeys] [-f hash_function] [-g [-c value][-s seed] ] [-a algorithm] [-M memory_in_MB] [-b BRZ_parameter] [-d tmp_dir] [-m file.mph] keysfile Minimum perfect hashing tool - -h print this help message - -c c value that determines the number of vertices in the graph - -a algorithm - valid values are - * bmz - * chm - -f hash function (may be used multiple times) - valid values are - * djb2 - * fnv - * jenkins - * sdbm - -V print version number and exit - -v increase verbosity (may be used multiple times) - -k number of keys - -g generation mode - -s random seed - -m minimum perfect hash function file - keysfile line separated file with keys + -h print this help message + -c c value that determines the number of vertices in the graph + -a algorithm - valid values are + * bmz + * bmz8 + * chm + * brz + -f hash function (may be used multiple times) - valid values are + * djb2 + * fnv + * jenkins + * sdbm + -V print version number and exit + -v increase verbosity (may be used multiple times) + -k number of keys + -g generation mode + -s random seed + -m minimum perfect hash function file + -M main memory availability (in MB) + -d temporary directory used in brz algorithm + -b parmeter of BRZ algorithm to make the maximal number of keys in a bucket lower than 256 + keysfile line separated file with keys + ``` ==Additional Documentation==