Maske mit Keywords versehen?

nordi

Erfahrenes Mitglied
Hallo,

ich habe folgende Frage: Ich habe eine Maske mit der man Dokumente hochladen kann. Dazu kommen Informationen wie Name, Semester etc. Ich würde jetzt gerne, dass man in der Maske Keywords eingeben kann/muss zu dem Thema seiner Arbeit. Nachher soll man dann nach den Keywords suchen können oder die Dokumente einzeln nach Keywords auflisten können. Die Maske mit Upload, Namen, Semester etc steht und funktioniert. Jetzt würde ich halt gerne diese Feature mit den Keywords einfügen. Wie würdet ihr das am besten machen? Einfach ein Feld, wo man mit "Kommata" die Keywords trennt? Kann das PHP nachher auslesen? Würde gerne eure Meinung dazu wissen? Besten Dank!
 
Speicherst du die Informationen in einer Datenbank?

Dann wäre es am einfachsten, ein Feld zu machen, ja.
Dann könntest du nachher (so mache ich das) im Query mit

PHP:
SELECT
    keyword
FROM
    bilder
WHERE
    `keyword`= "%'.$suchwort.'%"

das ganze raussuchen.
 
Dann doch lieber für die Keywords eine Tabelle anlegen, sowie eine weitere Tabelle, in der man Keywords und Bilder verknüpft. Normalisierung lässt grüßen :) Hilft übrigens auch ungemein, wenn man nach mehreren Keywords sucht.
 
Hi, also ich habe ich für ein normales Textfeld entschieden, mit der man seine Keywords mit einem Komma trennt. Diese Keywords werden dann in die Datenbank abgespeichert.

Meine Suchfunktion greift nun auf die Datenbank "keywords" zu. Bin mir aber nicht ganz sicher, wie ich jetzt durch explode() die Werte trennen kann. Hier ist der Code, der auf die Datenbank zugreift:

PHP:
$teile = explode(",", $keywords); 

$res = mysql_query("SELECT * FROM $essay WHERE keywords LIKE '%".$_GET['q']."%' ");
while($row=mysql_fetch_object($res)) {
 echo $row->$teile[0].'|'.$row->$teile[1]."\n";
}

Das klappt aber irgendwie nicht? Habt ihr Ideen?
 
Öhm, aus deinem Code wird nicht so ganz ersichtlich was du da versuchst.
Du solltest die Variante von Tim benutzen und die Keywords einzeln in der Tabelle abspeichern.
Code:
$essay_id = 1;
$keywords = explode(",", $_POST["keywords"]); //Aus dem Formular
$sql = "INSERT INTO keywords (id, essay_id, keyword) VALUES(NULL, ".$essay_id.", '".$keywords[0].'")";
for( $i = 1; $i < count($keywords); $i++ ){
  $sql .= ",(NULL, ".$essay_id.", '".$keywords[$i]."')";
}
mysql_query($sql) or die(mysql_error());

Die Tabellen würden dann so aussehen:
Code:
Table: essays
id|content

Table: keywords
id|essay_id|keyword
 
Hi, ich würde gern halt alle Daten in einer Datenbank haben, oder denkt ihr, dass das Nachteile hat? Wie kann ich denn die keywords, die in der Tabelle keywords gespeichert sind bei der Such-Abfrage getrennt auslesen lassen? Die Suchfunktion geht ja schon so weit, dass die Einträge durch den Autocompleter gezeigt werden. Wenn aber jemand bei den Keywords bsplw. "Personalpolitik, privater Sektor, Firmenpolitik" eingegeben hat und jemand nach "privater Sektor" sucht, dann werden direkt alle drei Keywords als Vorschlag gegeben.

Kann ich die Lucene Search Engine auch an eine Datenbank anbinden?
Um mal genaueren Eintrag zu geben. Dies hier ist der SQL-Eintrag für die Daten, die in der Maske eingegeben werden. Dort werden auch die keywords abgepeichert. Wenn dies "ungünstig" ist, dann nehme ich gerne die von euch vorgeschlagene Variante.

PHP:
$eintrag = "INSERT INTO $essay (filename,filesize,filetype,filepath,fachgebiet,semester,semesterid,doznachname,dozvorname,seminarthema,keywords,refnachname,refvorname,titel,typ,note,proof,ip,zeit) VALUES ('$fileName', '$fileSize', '$fileType', '$filePath','".$_POST['fachbereich']."','$teile[0]','$teile[1]','".$_POST['doznachname']."','".$_POST['dozvorname']."','".$_POST['seminarthema']."','".$_POST['keywords']."','".$_POST['refnachname']."','".$_POST['refvorname']."','".$_POST['titel']."','".$_POST['typ']."','".$_POST['note']."','','$ip','".time()."')";
echo mysql_error();

$eintragen = mysql_query($eintrag);
echo mysql_error();
 
Zuletzt bearbeitet:
Die Lucene nutzt als Datenquelle, was du angibst, und erstellt darüber einen Index. Der wird dann mit Hilfe Such-Engine durchsucht. Die Resultat werden dann relevanz-gebunden ausgegeben.
 
Wunderbar, werde ich mir angucken! Kann ich damit auch die Keywords wie oben genannt aus meiner Datenbank benutzen oder muss ich die nun anders abspeichern?
 
Zurück