/** * Aranan bir kök düðümünü bulur. * * @param str * @return Aranan kök ve eþ seslilerini taþýyan liste, bulunamazsa null. */ public List <Kok> bul(String str) { char[] girisChars = str.ToCharArray(); int girisIndex = 0; // Basit bir tree traverse algoritmasý ile kelime bulunur. KokDugumu node = baslangicDugumu; while (node != null && girisIndex < girisChars.Length) { if (node.getKelime() != null && node.getKelime().Equals(str)) { break; } if (logger.IsInfoEnabled) { logger.Info("Harf: " + node.getHarf() + " Taranan Kelime: " + node.getKelime()); } node = node.altDugumGetir(girisChars[girisIndex++]); } if (node != null) { return(node.tumKokleriGetir()); } return(null); }
public void walk(KokDugumu dugum, String olusan) { String tester = (olusan + dugum.getHarf()).Trim(); walkCount++; if (dugum != null) { dugumSayisi++; if (dugum.getKok() != null) { /* if (dugum.getKelime() != null && * !dugum.getKelime().equals(dugum.getKok().icerik())){ * System.out.println("!!!!! " + dugum.getKelime() + " - " + dugum.getKok().icerik()); * }*/ kokTasiyanDugumSayisi++; if (set != null) { set.Add(dugum.getKok()); } } if (dugum.getEsSesliler() != null) { esSesliTasiyanDugumSayisi++; if (set != null) { set.AddAll(dugum.getEsSesliler()); } } if (!dugum.altDugumVarMi()) { ucDugumSayisi++; } else { KokDugumu[] altDugumler = dugum.altDugumDizisiGetir(); int top = 0; foreach (KokDugumu altDugum in altDugumler) { if (altDugum != null) { top++; } } dugumSayilari[top]++; } } KokDugumu[] altDugumlerX = dugum.altDugumDizisiGetir(); if (altDugumlerX != null) { foreach (KokDugumu altDugum in altDugumlerX) { if (altDugum != null) { this.walk(altDugum, tester); } } } }
private void yuru(KokDugumu dugum, String olusan) { String tester = olusan; if (dugum.getHarf() != '\0') { tester += dugum.getHarf(); } if (dugum.getKok() != null) { distanceCalculationCount++; if (MetinAraclari.isInSubstringEditDistance((String)dugum.getKelime(), giris, tolerans)) { // Aday kök bulundu adaylar.Add(dugum.getKok()); } else { // Mesafe sınırı aşıldı. return; } } else { if (!MetinAraclari.isInSubstringEditDistance(tester.Trim(), giris, tolerans)) { // Ara stringde mesafe sınırı aşıldı return; } } foreach (KokDugumu altDugum in dugum.altDugumDizisiGetir()) { if (altDugum != null) { this.yuru(altDugum, tester); } } }
/** * Ağaç üzerinde yürüyerek ASCII toleranslı karşılaştırma ile * kök adaylarını bulur. Rekürsiftir. * * @param dugum : başlangıç düğümü * @param olusan : Yürüme sırasında oluşan kelime (düğümlerin karakter değerlerinden) */ public void yuru(KokDugumu dugum, String olusan) { String tester = (olusan + dugum.getHarf()).Trim(); walkCount++; if (dugum.getKok() != null) { if (logger.IsInfoEnabled) { logger.Info("Kok : " + dugum.getKelime()); } if (asciiTolaransliKarsilastir((String)dugum.getKelime(), giris)) { // Aday kok bulundu. dugum.tumKokleriEkle(adaylar); } else { return; } } else { if (asciiTolaransliKarsilastir(tester, giris)) {//TODO böölemi ! idi return; } } int seviye = tester.Length - 1; //TODO böölemi -1 yoktu if (seviye == giris.Length) { return; } // Uygun tüm alt dallarda yürü foreach (KokDugumu altDugum in dugum.altDugumDizisiGetir()) { if (altDugum != null) { if (agac.getAlfabe().asciiToleransliKiyasla(altDugum.getHarf(), giris[seviye])) { this.yuru(altDugum, tester); } } } }
public void walk(KokDugumu dugum, String olusan) { String tester = (olusan + dugum.getHarf()).Trim(); walkCount++; if (dugum != null){ dugumSayisi++; if(dugum.getKok() != null){ /* if (dugum.getKelime() != null && !dugum.getKelime().equals(dugum.getKok().icerik())){ System.out.println("!!!!! " + dugum.getKelime() + " - " + dugum.getKok().icerik()); }*/ kokTasiyanDugumSayisi++; if(set != null){ set.Add(dugum.getKok()); } } if(dugum.getEsSesliler() != null){ esSesliTasiyanDugumSayisi++; if(set!= null){ set.AddAll(dugum.getEsSesliler()); } } if(!dugum.altDugumVarMi()){ ucDugumSayisi++; }else{ KokDugumu[] altDugumler = dugum.altDugumDizisiGetir(); int top = 0; foreach (KokDugumu altDugum in altDugumler) { if(altDugum != null) top++; } dugumSayilari[top]++; } } KokDugumu[] altDugumlerX = dugum.altDugumDizisiGetir(); if (altDugumlerX != null){ foreach (KokDugumu altDugum in altDugumlerX){ if (altDugum != null){ this.walk(altDugum, tester); } } } }
/** * Verilen düðümü alt düðüm olarak ekler. eger alt düðümlerinin sayisi * CEP_BUYUKLUGU degerini asmissa bir HashMap oluþturur * @param dugum */ public void ekle(KokDugumu dugum) { if (index == CEP_BUYUKLUGU) { if (tumDugumler == null) { tumDugumler = new Dictionary <Char, KokDugumu>(CEP_BUYUKLUGU + 2); for (int i = 0; i < CEP_BUYUKLUGU; i++) { tumDugumler.Add(dugumler[i].getHarf(), dugumler[i]); } dugumler = null; } tumDugumler.Add(dugum.getHarf(), dugum); } else { dugumler[index++] = dugum; } }
/** * Verilen düðümü alt düðüm olarak ekler. eger alt düðümlerinin sayisi * CEP_BUYUKLUGU degerini asmissa bir HashMap oluþturur * @param dugum */ public void ekle(KokDugumu dugum) { if (index == CEP_BUYUKLUGU) { if (tumDugumler == null) { tumDugumler = new Dictionary<Char, KokDugumu>(CEP_BUYUKLUGU + 2); for (int i = 0; i < CEP_BUYUKLUGU; i++) { tumDugumler.Add(dugumler[i].getHarf(), dugumler[i]); } dugumler = null; } tumDugumler.Add(dugum.getHarf(), dugum); } else { dugumler[index++] = dugum; } }
private void yuru(KokDugumu dugum, String olusan) { String tester = olusan; if (dugum.getHarf() != '\0') tester += dugum.getHarf(); if (dugum.getKok() != null) { distanceCalculationCount++; if (MetinAraclari.isInSubstringEditDistance((String) dugum.getKelime(), giris, tolerans)) { // Aday kök bulundu adaylar.Add(dugum.getKok()); } else { // Mesafe sınırı aşıldı. return; } } else { if (!MetinAraclari.isInSubstringEditDistance(tester.Trim(), giris, tolerans)) { // Ara stringde mesafe sınırı aşıldı return; } } foreach (KokDugumu altDugum in dugum.altDugumDizisiGetir()) { if (altDugum != null) { this.yuru(altDugum, tester); } } }
/** * Ağaç üzerinde yürüyerek ASCII toleranslı karşılaştırma ile * kök adaylarını bulur. Rekürsiftir. * * @param dugum : başlangıç düğümü * @param olusan : Yürüme sırasında oluşan kelime (düğümlerin karakter değerlerinden) */ public void yuru(KokDugumu dugum, String olusan) { String tester = (olusan + dugum.getHarf()).Trim(); walkCount++; if (dugum.getKok() != null) { if (logger.IsInfoEnabled) logger.Info("Kok : " + dugum.getKelime()); if (asciiTolaransliKarsilastir((String) dugum.getKelime(), giris)) { // Aday kok bulundu. dugum.tumKokleriEkle(adaylar); } else { return; } } else { if (asciiTolaransliKarsilastir(tester, giris)) {//TODO böölemi ! idi return; } } int seviye = tester.Length - 1; //TODO böölemi -1 yoktu if(seviye == giris.Length) return; // Uygun tüm alt dallarda yürü foreach (KokDugumu altDugum in dugum.altDugumDizisiGetir()) { if (altDugum != null) { if (agac.getAlfabe().asciiToleransliKiyasla(altDugum.getHarf(), giris[seviye])) this.yuru(altDugum, tester); } } }