void CStemmer::step1ab()
{  if (b[k] == 's')
   {  if (ends("\04" "sses")) k -= 2; else
      if (ends("\03" "ies")) setto("\01" "i"); else
      if (b[k-1] != 's') k--;
   }
   if (ends("\03" "eed")) { if (m() > 0) k--; } else
   if ((ends("\02" "ed") || ends("\03" "ing")) && vowelinstem())
   {  k = j;
      if (ends("\02" "at")) setto("\03" "ate"); else
      if (ends("\02" "bl")) setto("\03" "ble"); else
      if (ends("\02" "iz")) setto("\03" "ize"); else
      if (doublec(k))
      {  k--;
         {  int ch = b[k];
            if (ch == 'l' || ch == 's' || ch == 'z') k++;
         }
      }
      else if (m() == 1 && cvc(k)) setto("\01" "e");
   }
}
Exemplo n.º 2
0
/* step1ab() gets rid of plurals and -ed or -ing. e.g.

       caresses  ->  caress
       ponies    ->  poni
       ties      ->  ti
       caress    ->  caress
       cats      ->  cat

       feed      ->  feed
       agreed    ->  agree
       disabled  ->  disable

       matting   ->  mat
       mating    ->  mate
       meeting   ->  meet
       milling   ->  mill
       messing   ->  mess

       meetings  ->  meet

*/
static void
step1ab(void)
{
	if (b[k] == 's') {
		if (ends("\04" "sses")) {
			k -= 2;
		} else if (ends("\03" "ies")) {
			setto("\01" "i"); 
		} else if (b[k-1] != 's') {
			k--;
		}
	}
	if (ends("\03" "eed")) {
		if (m() > 0U) {
			k--;
		}
	} else if ((ends("\02" "ed") || ends("\03" "ing")) && vowelinstem()) {
		k = j;
		if (ends("\02" "at")) {
			setto("\03" "ate");
		} else if (ends("\02" "bl")) {
			setto("\03" "ble");
		} else if (ends("\02" "iz")) {
			setto("\03" "ize");
		} else if (doublec(k)) {
			k--;
			{
				int ch = b[k];
				if (ch == 'l' || ch == 's' || ch == 'z') {
					k++;
				}
			}
		} else if (m() == 1U && cvc(k)) {
			setto("\01" "e");
		}
	}
	return;
}
Exemplo n.º 3
0
static void step1ab(struct stemmer * z)
{
   char * b = z->b;
   if (b[z->k] == 's')
   {  if (ends(z, "\04" "sses")) z->k -= 2; else
      if (ends(z, "\03" "ies")) setto(z, "\01" "i"); else
      if (b[z->k - 1] != 's') z->k--;
   }
   if (ends(z, "\03" "eed")) { if (m(z) > 0) z->k--; } else
   if ((ends(z, "\02" "ed") || ends(z, "\03" "ing")) && vowelinstem(z))
   {  z->k = z->j;
      if (ends(z, "\02" "at")) setto(z, "\03" "ate"); else
      if (ends(z, "\02" "bl")) setto(z, "\03" "ble"); else
      if (ends(z, "\02" "iz")) setto(z, "\03" "ize"); else
      if (doublec(z, z->k))
      {  z->k--;
         {  int ch = b[z->k];
            if (ch == 'l' || ch == 's' || ch == 'z') z->k++;
         }
      }
      else if (m(z) == 1 && cvc(z, z->k)) setto(z, "\01" "e");
   }
}
Exemplo n.º 4
0
 void PorterStemmer::step1() {
   if (b[k] == _T('s')) {
     if (ends(_T("sses"))) k -= 2;
     else if (ends(_T("ies"))) setto(_T("i"));
     else if (b[k-1] != _T('s')) k--;
   }
   if (ends(_T("eed"))) {
     if (m() > 0)
       k--;
   }
   else if ((ends(_T("ed")) || ends(_T("ing"))) && vowelinstem()) {
     k = j;
     if (ends(_T("at"))) setto(_T("ate"));
     else if (ends(_T("bl"))) setto(_T("ble"));
     else if (ends(_T("iz"))) setto(_T("ize"));
     else if (doublec(k)) {
       int32_t ch = b[k--];
       if (ch == _T('l') || ch == _T('s') || ch == _T('z'))
         k++;
     }
     else if (m() == 1 && cvc(k))
       setto(_T("e"));
   }
 }
Exemplo n.º 5
0
static void r(struct stemmer * z, char * s) { if (m(z) > 0) setto(z, s); }
Exemplo n.º 6
0
void r(char * s) { if (m() > 0) setto(s); }
Exemplo n.º 7
0
 void Porter_Stemmer::r(const char * s) { if (m() > 0) setto(s); }
Exemplo n.º 8
0
  void PorterStemmer::r(const TCHAR *s) { 
	  if (m() > 0) setto(s); 
  }
void CStemmer::r(char * s) { if (m() > 0) setto(s); }
Exemplo n.º 10
0
static void r(struct stemmer * z, char * s) { if (R1(z)) setto(z, s); }