public string Stemming(string W) { string Stem = ""; W = W.Trim(); // 1 + 2 for (int i = 0; i < W.Length; i++) { string S = W[i].ToString(); if (!D.Search(S)) { if ((W[i] == 'ئ') || (W[i] == 'ء') || (W[i] == 'ؤ')) { Stem += "أ"; } else { Stem += S; } } } // 3 if (Stem.Length >= 6) { if (P3.Search2(Stem, true)) { Stem = Stem.Substring(3); } } else { if (Stem.Length >= 5) { if (P2.Search2(Stem, true)) { Stem = Stem.Substring(2); } } } // 4 if (Stem.Length >= 6) { if (S3.Search2(Stem, false)) { Stem = Stem.Substring(0, Stem.Length - 3); } } else { if (Stem.Length >= 5) { if (S2.Search2(Stem, false)) { Stem = Stem.Substring(0, Stem.Length - 2); } } } // 5 if ((Stem.Length >= 4) && (Stem[0] == 'و') && (Stem[1] == 'و')) { Stem = Stem.Substring(1); } // 6 Stem = Stem.Replace('أ', 'ا'); Stem = Stem.Replace('آ', 'ا'); Stem = Stem.Replace('إ', 'ا'); // 7 if (Stem.Length <= 3) { return(Stem); } // 8 if (Stem.Length == 4) { Stem = Word_4(Stem); } else { if (Stem.Length == 5) { Stem = Word_5(Stem); } else { if (Stem.Length == 6) { Stem = Word_6(Stem); } else { if (Stem.Length == 7) { Stem = Short_Suffix(Stem); if (Stem.Length == 6) { Stem = Word_6(Stem); } else { Stem = Short_Prefix(Stem); if (Stem.Length == 6) { Stem = Word_6(Stem); } } } } } } // 9 return(Stem); }