Christoph Zurnieden: Suchfunktion

Beitrag lesen

Hi,

Ah, ich dachte schon, er kömmt nicht mehr wieder ;-)

Haben die wörter bestimmte Werte die automatisch verglichen werden?

Nein, das ist ein ganz normaler Vergleich. Die Buchstaben haben hier die unterschiedlichen Werte.

die funktion findet nur genau die kompletten wörter im array, aber nicht wenn das suchwort ein teilwort
eines stichwortes ist, wie ich das in meinem ansatz versucht habe.

Ja, das ist ein Problem bei diesem Ansatz.
Jetzt hast Du verschiedene Möglichkeiten. Entweder bist Du brutal und juckelst mit einer linearen Suche drüber, da kannst Du dann sogar reguäre Ausdrücke benutzen. Das kostet aber viel Rechenzeit, ist nur bei einer kurzen Liste zu empfehlen. Oder Du benutzt z.B. einen Suffix-Tree. Der kostet jedoch viel Speicher, da wird die Liste verdammt lang. Aber wenn Du eine Offlinesuche basteln willst und nur den Browser mit Javascript nehmen kannst mußt Du halt einige Kompromisse eingehen.

Ich würde eine lineare Suche mit Regexen probieren:

function linearSearch(needle, haystack){

var len  = haystack.length -1;
  regex    = new RegExp(needle);

while(len--){
    if (regex.test(haystack[len])){
      return len;
    }
  }
  return -1;
}

Der Code ist "ausse Lamäng" wie man hier sagt, also aus dem Ärmel geschüttelt und ungeprüft. Soll nur die Idee darstellen. (es fehlen auch noch Tests auf Fehler usw)

Wenn Du sehr viel Material hast, das Du auf mehrere Dateien verteilen mußt wäre evt ein Bloomfilter nützlich. Aber das dürfte bei Deinen Anforderungen zuviel Aufwand im Voraus darstellen.

Wie sieht es mit Umlauten aus. Müssen die maskiert eingegeben werden(z.B. löscher)?

Nein, müssen nicht.

gibt es vielleicht ressourcen über das programmieren von suchfunktionen.

Da darüber schon seit den Zeiten von Lord Byrons einz'ger Tochter selig geforscht wird, ist reichlich vorhanden. _Zu_ reichlich, wie Du schnell feststellen wirst.

Binäre Suche z.B. hat mir nichts gesagt. Was gibts da noch, wo kann man sich informieren.

Da Du damit anfängst kannst Du Dir höchstwahrscheinlich bei einigen Dingern nicht vorstellen, wie das funktionieren soll. Da hilft mitunter ein bewegtes Bild. Kannst Dich ja mal durch http://www.libraryreference.org/index.php?c=Computers/Algorithms/Animated durchklappern. Ansonsten ist dafür Wikipedia natürlich ein sehr guter Anlaufpunkt. Die sind da aber mehr theoretisch. Wenn Du aber z.B. aus mathematischen Kreisen kommst kannst Du damit wohl mehr anfangen als mit bewegten Bildchen.

so short

Christoph Zurnieden