Ignore too long lexeme
authorTeodor Sigaev
Tue, 25 Nov 2003 13:33:15 +0000 (13:33 +0000)
committerTeodor Sigaev
Tue, 25 Nov 2003 13:33:15 +0000 (13:33 +0000)
contrib/tsearch2/ts_cfg.c

index 6ff25b2b166de0f8ce04e79bb4aa062c86258a25..0898b9192400b576ffaa59306b5d76b39eb6376b 100644 (file)
@@ -21,6 +21,8 @@
 #include "common.h"
 #include "tsvector.h"
 
+#define IGNORE_LONGLEXEME  1
+
 /*********top interface**********/
 
 static void *plan_getcfg_bylocale = NULL;
@@ -288,10 +290,18 @@ parsetext_v2(TSCfgInfo * cfg, PRSTEXT * prs, char *buf, int4 buflen)
                                       PointerGetDatum(&lenlemm)))) != 0)
    {
 
-       if (lenlemm >= MAXSTRLEN)
+       if (lenlemm >= MAXSTRLEN) {
+#ifdef IGNORE_LONGLEXEME
+           ereport(NOTICE,
+                   (errcode(ERRCODE_SYNTAX_ERROR),
+                    errmsg("word is too long")));
+           continue;
+#else 
            ereport(ERROR,
                    (errcode(ERRCODE_SYNTAX_ERROR),
                     errmsg("word is too long")));
+#endif
+       }
 
        if (type >= cfg->len)   /* skip this type of lexem */
            continue;
@@ -414,10 +424,18 @@ hlparsetext(TSCfgInfo * cfg, HLPRSTEXT * prs, QUERYTYPE * query, char *buf, int4
                                       PointerGetDatum(&lenlemm)))) != 0)
    {
 
-       if (lenlemm >= MAXSTRLEN)
+       if (lenlemm >= MAXSTRLEN) {
+#ifdef IGNORE_LONGLEXEME
+           ereport(NOTICE,
+                   (errcode(ERRCODE_SYNTAX_ERROR),
+                    errmsg("word is too long")));
+           continue;
+#else 
            ereport(ERROR,
                    (errcode(ERRCODE_SYNTAX_ERROR),
                     errmsg("word is too long")));
+#endif
+       }
 
        hladdword(prs, lemm, lenlemm, type);