X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=dict%2Flookgrep.c;h=03193ed839155bd65f7e8288525e842b2e1c9fd3;hb=07daef4fb241a9106fb995bb87a823708babcb10;hp=aa01af5991cd693ae6d1821756c5cbe2f8fa09c7;hpb=896c0427df9d8eff5de6a1735dcd992e067df844;p=idzebra-moved-to-github.git diff --git a/dict/lookgrep.c b/dict/lookgrep.c index aa01af5..03193ed 100644 --- a/dict/lookgrep.c +++ b/dict/lookgrep.c @@ -1,6 +1,6 @@ -/* $Id: lookgrep.c,v 1.25 2002-08-02 19:26:55 adam Exp $ - Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002 - Index Data Aps +/* $Id: lookgrep.c,v 1.30 2005-11-01 10:16:08 adam Exp $ + Copyright (C) 1995-2005 + Index Data ApS This file is part of the Zebra server. @@ -28,12 +28,22 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include #include -#include +#include "dict-p.h" typedef unsigned MatchWord; #define WORD_BITS 32 #define MAX_LENGTH 1024 +/* This code is based + * Sun Wu and Udi Manber: Fast Text Searching Allowing Errors. + * Communications of the ACM, pp. 83-91, Vol. 35, No. 10, Oct. 1992, USA. + * PostScript version of the paper in its submitted form: agrep1.ps) + * recommended reading to understand AGREP ! + * + * http://www.tgries.de/agrep/#AGREP1PS + * http://www.tgries.de/agrep/doc/agrep1ps.zip + */ + typedef struct { int n; /* no of MatchWord needed */ int range; /* max no. of errors */ @@ -373,10 +383,10 @@ int dict_lookup_grep (Dict dict, const char *pattern, int range, void *client, dfa_verbose = 1; #endif - logf (LOG_DEBUG, "dict_lookup_grep range=%d", range); + yaz_log (YLOG_DEBUG, "dict_lookup_grep range=%d", range); for (i = 0; pattern[i]; i++) { - logf (LOG_DEBUG, " %3d %c", pattern[i], + yaz_log (YLOG_DEBUG, " %3d %c", pattern[i], (pattern[i] > ' ' && pattern[i] < 127) ? pattern[i] : '?'); } @@ -385,6 +395,7 @@ int dict_lookup_grep (Dict dict, const char *pattern, int range, void *client, i = dfa_parse (dfa, &this_pattern); if (i || *this_pattern) { + yaz_log (YLOG_WARN, "dfa_parse fail=%d", i); dfa_delete (&dfa); return -1; } @@ -417,7 +428,7 @@ int dict_lookup_grep (Dict dict, const char *pattern, int range, void *client, dfa, max_pos, init_pos); else i = 0; - logf (LOG_DEBUG, "max_pos = %d", *max_pos); + yaz_log (YLOG_DEBUG, "max_pos = %d", *max_pos); dfa_delete (&dfa); xfree (Rj); rm_MatchContext (&mc);