# Suchfunktion mit Java in Mysql Datenbank



## Ghorki (21. Dez 2010)

Guten Tag,

in meiner Webanwenung kann ich verschiedene Formulare ausfüllen, eingegebene Daten werden dann in meiner Mysql Datenbank gespeichert.

Nun möchte ich eine Suchfunktion mit Java implementieren, die meine Datenbank nach verschiedenen Suchbegriffen, die der User eingeben kann, durchsucht, aber ich habe momentan kein Plan wie ich da anfangen soll.

Ich hoffe Ihr könnt mir eine kleine Starthilfe verschaffen.
Danke schonmal,

MFG
Ghorki


----------



## ARadauer (21. Dez 2010)

Wie schaut deine Datenbank Struktur aus?




> aber ich habe momentan kein Plan wie ich da anfangen soll.


mit einem select ;-)

select * from tabelle where text like ('%suchbegriff%')


----------



## Ghorki (21. Dez 2010)

Danke, ich habs mir wohl ein bischen umständlicher vorgestellt .

Ich habe eine Datenbank ("User") mit 2 Tabellen "Anbieter" und "Sucher" die einfache Daten wie Name, Straße ... enthalten.

Nun möchte ich dass, wenn ein Suchbegriff mit einem Wort in einer Spalte (egal welche Tabelle) übereinstimmt, alle Daten einer Spalte ausgeben werden.


----------



## ARadauer (21. Dez 2010)

> wenn ein Suchbegriff mit einem Wort in einer Spalte (egal welche Tabelle) übereinstimmt


ja man kann jetzt natürlich die beiden entsprechenden Abfragen definieren, 
where NAME like ('%suchbegriff%') OR VORNAME like ('%suchbegriff%') OR Adresse like ('%suchbegriff%') ...
ist einwenig umständlich. Auf SQL Ebene gibt es leider aber keine Alternative... soweit ich weit weiß.

Natürlich gibt es noch anderes Dinge wie Such Engines die einen eigenen Suchindex aufgauen und mit denen man dann suchen kann. Das ist viel viel proffesioneller, performanter aber halt auch aufwändiger... Stichwort: Lucene


----------



## ARadauer (21. Dez 2010)

Mhn wobei aufändiger der Falsche Begriff ist. Bei 3 Tabellen mit 5 Spalten würd ich kein Lucen einesetzen. Bei 50 Tabellen mit 10 Spalten und Millionen von Einträgen kannst die SQL Version vergessen...


----------



## Ghorki (21. Dez 2010)

Ok danke, 
ich werde mich noch ein bischen mit den Mysql Abfragen beschäftigen, 
wie du schon sagtest ist mein Projekt nicht so groß, hab nur 2 Tabellen mit jeweils 10 Spalten .

Ich werde mich Morgen nochmal melden und meine Erfahung und Fragen, falls es noch welche gibt (hoffe ja nicht ;D) , posten.


----------



## henpara (21. Dez 2010)

Am einfachsten erscheint mir, wenn du entweder schon im Programm ne Liste mit "schlagworten" hast, also deine Spaltennamen, die du "nur" abgleichen musst und bei  übereinstimmung einen entsprechenden select füllen, oder aber du machst das ganze etwas umfangreicher, dafür zukunftssicherer indem du erstmal die spaltennamen der tabellen abfragst, und dann wie oben beschrieben weitermachst.


----------



## Ghorki (22. Dez 2010)

Ok ich mache es jetzt so wie ARadauer es beschrieben hat, da ich mich jetzt nur auf 3 Felder beschränkt habe.

"select * from "Tabelle" where    "1.Feld" like ('%"+gesucht.getSuche()+"%')) OR " +
                                        "  "2.Feld" like ('%"+gesucht.getSuche()+"%') OR " +
                                        "  "3.Feld" like ('%"+gesucht.getSuche()+"%')OR ";

Falls ein Suchbegriff stimmt, gebe ich dann die ganze Spalte der ID aus.

Danke für eure Hilfe 
War einfacher als ich gedacht habe.


----------

