Sanny123 Geschrieben 10. November 2008 Geschrieben 10. November 2008 Hallo, ich hoffe ich bin hier richtig und mir kann jemand helfen. Also mein Problem: Ich hab eine Webanwengung in der was eingegeben werden kann z.B. text1-1234-text2, momentan ist es so das genau der richtige Begriff eingegeben werden muss, sonst wird kein Ergebnis ausgegeben. Jetzt würd ich gerne das man z.B. %-1234-text2 eingeben kann und man trotzdem auf das richtige Ergebnis kommt, falls man die den genauen Begriff nicht mehr weiß. Der größte Teil dieses Programms wurde in Java geschrieben, nur die Webseiten in jsp. Wie könnte so ein Code aussehen? Ich muss dazu sagen das ich das Programm übernommen hab und warten muss, ich selbst bin ein ziemlich Neuling auf diesen Gebiert und hab keine Ahnung wie man das machen muss. Kann mir jemand helfen??? Zitieren
bigredeyes Geschrieben 10. November 2008 Geschrieben 10. November 2008 hört sich nach regex an? bigredeyes Zitieren
Sanny123 Geschrieben 10. November 2008 Autor Geschrieben 10. November 2008 Erstmals danke für die Antwort. Aber ich bin mir nicht sicher ob regex mein Problem löst. Hab mir die Doku ein bisschen angesehen und so wie ich es verstanden hab, muss man schon zirka wissen was der fehlende Teil ist. Vielleicht hab ich mich falsch ausgedrück. Also ich hab eine Suchmaske, da geb ich text1-1234-text2 ein (das ist eine Bestimmte ID in der Datenbank) und jetzt will ich z.B. nach "Platzhalter"-1234-text2 suchen, das Programm soll jetzt den fehlenden Teil (den ich ja nicht kenne) ersetzen und mir das richtige Ergebnis liefern. Ausgegeben wird dann der Name und Nachname von dieser ID. Vielleicht ist regex auch das richtige, keine Ahnung, wie schon erwähnt ich hab null Ahnung :hells: Zitieren
bigredeyes Geschrieben 10. November 2008 Geschrieben 10. November 2008 wenn der suchstring nach sql geht, könnte eine suche mit '%-1234-text2' helfen. dann übernimmt die db das 'regexen'. bigredeyes Zitieren
dr.dimitri Geschrieben 10. November 2008 Geschrieben 10. November 2008 Hi, das ist ein Fall für Volltextindizierung. Ansonsten wirst Du sehr schnell in Performanceprobleme laufen. Einfach einen WHERE spalte LIKE ... abzusetzen gepaart mit einer größeren Anzahl von Usern ist der einfachste Weg eine Datenbank in die Knie zu zwingen. Dim Zitieren
Guybrush Threepwood Geschrieben 10. November 2008 Geschrieben 10. November 2008 Hi, das ist ein Fall für Volltextindizierung. Ansonsten wirst Du sehr schnell in Performanceprobleme laufen. Einfach einen WHERE spalte LIKE ... abzusetzen gepaart mit einer größeren Anzahl von Usern ist der einfachste Weg eine Datenbank in die Knie zu zwingen. Dim Macht das in dem Fall einen Unterschied? Also so wie ich den Threadersteller verstanden habe will er aus einer Zeile in der IDs stehen alle rausfiltern die zum Beispiel mit "-1234-text2" enden. AFAIK bringt die Volltextsuche nur Vorteile wenn man Spalten hat in denen sich sehr viel Text befindet der durchsucht werden müsste... Zitieren
nekokaburi Geschrieben 10. November 2008 Geschrieben 10. November 2008 Erstmals danke für die Antwort. Aber ich bin mir nicht sicher ob regex mein Problem löst. Hab mir die Doku ein bisschen angesehen und so wie ich es verstanden hab, muss man schon zirka wissen was der fehlende Teil ist. Vielleicht hab ich mich falsch ausgedrück. Also ich hab eine Suchmaske, da geb ich text1-1234-text2 ein (das ist eine Bestimmte ID in der Datenbank) und jetzt will ich z.B. nach "Platzhalter"-1234-text2 suchen, das Programm soll jetzt den fehlenden Teil (den ich ja nicht kenne) ersetzen und mir das richtige Ergebnis liefern. Ausgegeben wird dann der Name und Nachname von dieser ID. Vielleicht ist regex auch das richtige, keine Ahnung, wie schon erwähnt ich hab null Ahnung :hells: Für den Fall, dass du keine DB zugrunde liegen hast bzw. es Java-seitig lösen musst/willst, kannst du einfach mit den String methoden: startsWith, endsWith und indexOf arbeiten. startsWith und endsWith geben dir booleans zurück (sind denke ich selbsterklärend) indexOf gibt dir den index zurück an dem die Zeichenfolge gefunden wurde, bzw -1 falls die Zeichenfolge nicht vorkommt (es genügt dir also auf -1 zu prüfen) Zitieren
dr.dimitri Geschrieben 11. November 2008 Geschrieben 11. November 2008 Macht das in dem Fall einen Unterschied? Natürlich. Hier nochmal die Anforderung des OP: Jetzt würd ich gerne das man z.B. %-1234-text2 eingeben kann % am Anfang bedeutet, dass die Abfrage nicht über einen normalen B-Tree Index laufen wird ist, sprich Full Table Scan. Dim Zitieren
Bubble Geschrieben 11. November 2008 Geschrieben 11. November 2008 Wie könnte so ein Code aussehen? Wenn die Daten in einer DB liegen, kannst Du zuerst die von der DB angebotenen Möglichkeiten ausprobieren. Für andere Suchverfahren, müsstest Du die zu durchsuchenden Daten gegebenfalls in einer eigenen Datenbank bzw. Datenstruktur verwalten. Es gibt verschiedene Algorithmen zum Durchsuchen von Texten nach Teilstrings. Möchtest Du nur Teilstrings, Suffixe oder Prefixe finden, oder soll es später auch noch auf eine Suche ausgeweitet werden, bei der auch mal Buchstaben vertauscht, hinzugefügt oder fehlen dürfen? Wie groß ist die zu durchsuchende Datenbank und wie viele Anfragen werden in welchem Zeitraum erwartet? Dies sind alles Fragen, die Du klären musst. Zitieren
Sanny123 Geschrieben 11. November 2008 Autor Geschrieben 11. November 2008 Vielen Dank für die vielen Antworten, ich werd mal eine nach der anderen ausprobieren und sag euch dann wie es gelaufen ist. Nochmals danke Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.