Index: third_party/sqlite/src/ext/fts3/fts3_porter.c |
diff --git a/third_party/sqlite/src/ext/fts3/fts3_porter.c b/third_party/sqlite/src/ext/fts3/fts3_porter.c |
index f7f047c8fcc29a4d1b1337dcdebc65b5b1a49d3e..933602a602b54e35477b5a9e2e250dc1cbcb1afe 100644 |
--- a/third_party/sqlite/src/ext/fts3/fts3_porter.c |
+++ b/third_party/sqlite/src/ext/fts3/fts3_porter.c |
@@ -22,9 +22,8 @@ |
** * The FTS3 module is being built into the core of |
** SQLite (in which case SQLITE_ENABLE_FTS3 is defined). |
*/ |
-#if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) |
- |
#include "fts3Int.h" |
+#if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) |
#include <assert.h> |
#include <stdlib.h> |
@@ -41,7 +40,7 @@ typedef struct porter_tokenizer { |
} porter_tokenizer; |
/* |
-** Class derived from sqlit3_tokenizer_cursor |
+** Class derived from sqlite3_tokenizer_cursor |
*/ |
typedef struct porter_tokenizer_cursor { |
sqlite3_tokenizer_cursor base; |
@@ -404,12 +403,14 @@ static void porter_stemmer(const char *zIn, int nIn, char *zOut, int *pnOut){ |
/* Step 2 */ |
switch( z[1] ){ |
case 'a': |
- stem(&z, "lanoita", "ate", m_gt_0) || |
- stem(&z, "lanoit", "tion", m_gt_0); |
+ if( !stem(&z, "lanoita", "ate", m_gt_0) ){ |
+ stem(&z, "lanoit", "tion", m_gt_0); |
+ } |
break; |
case 'c': |
- stem(&z, "icne", "ence", m_gt_0) || |
- stem(&z, "icna", "ance", m_gt_0); |
+ if( !stem(&z, "icne", "ence", m_gt_0) ){ |
+ stem(&z, "icna", "ance", m_gt_0); |
+ } |
break; |
case 'e': |
stem(&z, "rezi", "ize", m_gt_0); |
@@ -418,43 +419,54 @@ static void porter_stemmer(const char *zIn, int nIn, char *zOut, int *pnOut){ |
stem(&z, "igol", "log", m_gt_0); |
break; |
case 'l': |
- stem(&z, "ilb", "ble", m_gt_0) || |
- stem(&z, "illa", "al", m_gt_0) || |
- stem(&z, "iltne", "ent", m_gt_0) || |
- stem(&z, "ile", "e", m_gt_0) || |
- stem(&z, "ilsuo", "ous", m_gt_0); |
+ if( !stem(&z, "ilb", "ble", m_gt_0) |
+ && !stem(&z, "illa", "al", m_gt_0) |
+ && !stem(&z, "iltne", "ent", m_gt_0) |
+ && !stem(&z, "ile", "e", m_gt_0) |
+ ){ |
+ stem(&z, "ilsuo", "ous", m_gt_0); |
+ } |
break; |
case 'o': |
- stem(&z, "noitazi", "ize", m_gt_0) || |
- stem(&z, "noita", "ate", m_gt_0) || |
- stem(&z, "rota", "ate", m_gt_0); |
+ if( !stem(&z, "noitazi", "ize", m_gt_0) |
+ && !stem(&z, "noita", "ate", m_gt_0) |
+ ){ |
+ stem(&z, "rota", "ate", m_gt_0); |
+ } |
break; |
case 's': |
- stem(&z, "msila", "al", m_gt_0) || |
- stem(&z, "ssenevi", "ive", m_gt_0) || |
- stem(&z, "ssenluf", "ful", m_gt_0) || |
- stem(&z, "ssensuo", "ous", m_gt_0); |
+ if( !stem(&z, "msila", "al", m_gt_0) |
+ && !stem(&z, "ssenevi", "ive", m_gt_0) |
+ && !stem(&z, "ssenluf", "ful", m_gt_0) |
+ ){ |
+ stem(&z, "ssensuo", "ous", m_gt_0); |
+ } |
break; |
case 't': |
- stem(&z, "itila", "al", m_gt_0) || |
- stem(&z, "itivi", "ive", m_gt_0) || |
- stem(&z, "itilib", "ble", m_gt_0); |
+ if( !stem(&z, "itila", "al", m_gt_0) |
+ && !stem(&z, "itivi", "ive", m_gt_0) |
+ ){ |
+ stem(&z, "itilib", "ble", m_gt_0); |
+ } |
break; |
} |
/* Step 3 */ |
switch( z[0] ){ |
case 'e': |
- stem(&z, "etaci", "ic", m_gt_0) || |
- stem(&z, "evita", "", m_gt_0) || |
- stem(&z, "ezila", "al", m_gt_0); |
+ if( !stem(&z, "etaci", "ic", m_gt_0) |
+ && !stem(&z, "evita", "", m_gt_0) |
+ ){ |
+ stem(&z, "ezila", "al", m_gt_0); |
+ } |
break; |
case 'i': |
stem(&z, "itici", "ic", m_gt_0); |
break; |
case 'l': |
- stem(&z, "laci", "ic", m_gt_0) || |
- stem(&z, "luf", "", m_gt_0); |
+ if( !stem(&z, "laci", "ic", m_gt_0) ){ |
+ stem(&z, "luf", "", m_gt_0); |
+ } |
break; |
case 's': |
stem(&z, "ssen", "", m_gt_0); |
@@ -495,9 +507,11 @@ static void porter_stemmer(const char *zIn, int nIn, char *zOut, int *pnOut){ |
z += 3; |
} |
}else if( z[2]=='e' ){ |
- stem(&z, "tneme", "", m_gt_1) || |
- stem(&z, "tnem", "", m_gt_1) || |
- stem(&z, "tne", "", m_gt_1); |
+ if( !stem(&z, "tneme", "", m_gt_1) |
+ && !stem(&z, "tnem", "", m_gt_1) |
+ ){ |
+ stem(&z, "tne", "", m_gt_1); |
+ } |
} |
} |
break; |
@@ -516,8 +530,9 @@ static void porter_stemmer(const char *zIn, int nIn, char *zOut, int *pnOut){ |
} |
break; |
case 't': |
- stem(&z, "eta", "", m_gt_1) || |
- stem(&z, "iti", "", m_gt_1); |
+ if( !stem(&z, "eta", "", m_gt_1) ){ |
+ stem(&z, "iti", "", m_gt_1); |
+ } |
break; |
case 'u': |
if( z[0]=='s' && z[2]=='o' && m_gt_1(z+3) ){ |
@@ -631,6 +646,7 @@ static const sqlite3_tokenizer_module porterTokenizerModule = { |
porterOpen, |
porterClose, |
porterNext, |
+ 0 |
}; |
/* |