From 4ca765f9aa21b2b06834a024499f0fd039385dd8 Mon Sep 17 00:00:00 2001
From: Teodor Sigaev <teodor@sigaev.ru>
Date: Tue, 25 Nov 2003 13:33:15 +0000
Subject: [PATCH] Ignore too long lexeme

---
 contrib/tsearch2/ts_cfg.c | 22 ++++++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)

diff --git a/contrib/tsearch2/ts_cfg.c b/contrib/tsearch2/ts_cfg.c
index 6ff25b2b166..0898b919240 100644
--- a/contrib/tsearch2/ts_cfg.c
+++ b/contrib/tsearch2/ts_cfg.c
@@ -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);
 
-- 
GitLab