Çok sayıda farklı yazımda metin içeren çok sayıda dizim var. Anahtar kelimeler arayarak bu dizeleri belirteçlerimdir ve bir anahtar kelime bulunursa, bu anahtar kelime için birleşik bir metin kullanırım.Bir metindeki tüm anahtar kelimeleri bulmak için verimli algoritma
Arama dizesinin "schw.", "Schwa." ve "schwarz". Tüm "schwarz" metninde çözülen üç anahtar kelime var.
Şimdi, anahtar sözcükler olmadan tüm anahtar kelimeleri bulmanın etkili bir yolunu arıyorum.İstediğiniz her anahtar kelime için (anahtar kelime).
Örnek veri:
H-Fuss ahorn 15 cm/SH48cm
Metall-Fuss chrom 9 cm/SH42cm
Metall-Kufe alufbg.12 cm/SH45c
Metall-Kufe verchr.12 cm/SH45c
Metall-Zylind.aluf.12cm/SH45cm
Kufe alufarbig
Metall-Zylinder hoch alufarbig
Kunststoffgl.schw. - hoch
Kunststoffgl.schw. - Standard
Kunststoffgleiter - schwarz für Sitzhoehe 42 cm
örnek anahtar kelimeler (anahtar, değer):
h-fuss, Holz
ahorn, Ahorn
metall, Metall
chrom, Chrom
verchr, Chrom
alum, Aluminium
aluf, Aluminium
kufe, Kufe
zylind, Zylinder
hoch, Hoch
kunststoffgl, Gleiter
gleiter, Gleiter
schwarz, Schwarz
schw., Schwarz
Numune sonucu:
Holz, Ahorn
Metall, Chrom
Metall, Kufe, Aluminium
Metall, Kufe, Chrom
Metall, Zylinder, Aluminium
Kufe, Aluminium
Metall, Zylinder, Hoch, Aluminium
Gleiter, Schwarz, Hoch
Gleiter, Schwarz
Gleiter, Schwarz
1 harika şeyler. Teşekkürler. – Aliostad
Aho-Crasick algoritması gerçekten umut verici görünüyor. Şu anda algoritmayı uygulayan bir CodeProject projesine bakıyorum: http://www.codeproject.com/KB/recipes/ahocorasick.aspx – VVS
Aho-Corasick tam olarak istediğiniz gibi. Önereceğim bir başka çözüm de, bir DFA'yı da oluşturan bir regex kütüphanesi kullanmaktır. Örneğin, http://code.google.com/p/re2/ –