| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
Werner Homepage-Total.de Moderator

|
 |
|
|
Wenn jemand in dem oberen Suchfeld etwas eingibt wird der Suchbegriff zur Index-Suchmaschine gesendet.
Findet nun die SuMa den Suchbegriff so wird in einer Datei nachgeschaut ob dieser Suchbegriff schon
eingetragen ist (wenn nein, wird dieser dann eingetragen).
Bei einer erneuten Eingabe im oberen Suchfeld wird der Suchbegriff dann als Vorschlag angezeigt. |
_________________ Bei Fragen oder Fehlermeldungen - Bitte ausführlichen Code posten!
Wie man Fragen richtig stellt |
|
|
| 25 Aug 2010 22:25 |
|
  |
MGoldi Mitglied

|
 |
|
|
Danke Also hab ich doch richtig gedacht
Und wie mache ich die Überprüfung, ob der Sucheintrag schon vorhanden ist?? Oder ist dies auch sehr aufwendig?? Vltt. einen Lösungsansatz (oder ein fertiges Script )?
Danke  |
_________________ LG MGoldi |
|
|
| 26 Aug 2010 10:07 |
|
 |
Werner Homepage-Total.de Moderator

|
 |
|
|
| PHP-Code: | 1 2 3 4 5 6 7 8
| <?php
$array = file("data.txt"); // Jeder Suchbegriff steht in einer Zeile!
if (!in_array($suchbegriff, $array)) {
$handler = fOpen("data.txt" , "a+");
fWrite($handler , $suchbegriff . "\n");
fClose($handler);
}
?> |
Auf meiner Website habe ich das allerdings etwas anders gelöst:
| PHP-Code: | 1 2 3 4 5 6 7
| <?php
$inhalt = file($datei);
if (!stristr(implode(";", $inhalt), $suchbegriff . "\n;")) {
array_push($inhalt, strtoLower($suchbegriff) . "*\n");
file_put_contents($datei, implode("", $inhalt));
}
?> |
Zusätzlich wird noch ein * Sternchen hinzugefügt,
damit ich erkennen kann welche Suchbegriffe neu sind.
Die Datei in denen die Suchbegriffe sind braucht auch etwas Pflege!
So müssen Suchbegriffe gelöscht werden, die keinen vollständigen Suchbegriff haben
z.B: Fehlermel vs. Fehlermeldungen.
Außerdem sollte die Stopwortliste ("aber","alle","als","am","an","andere","anderen","anderes" ...)
gefiltert werden. |
_________________ Bei Fragen oder Fehlermeldungen - Bitte ausführlichen Code posten!
Wie man Fragen richtig stellt |
|
|
| 26 Aug 2010 20:08 |
|
 |
MGoldi Mitglied

|
 |
|
|
Vielen Dank
Also muss ich zwischendurch einmal die Datei nachgucken, ob da irgendwelche falschen Wörter drin sind? Und Wörter, die dort nicht hineingehören herausfiltern beim schreiben in die Datei oder schon bei der Abfrage??
Ich werde es sofort ausprobieren!!! |
_________________ LG MGoldi |
|
|
| 27 Aug 2010 08:08 |
|
 |
MGoldi Mitglied

|
 |
|
|
Hilfe es funktioniert nicht!!!
Immer wenn ich neue Wörter eingebe, dann schreibt er die auch in die Datei, nur wenn ich schon vorhandene Wörter eingebe, dann schreibt er die auch in die Datei.. Mein Code:
| PHP-Code: | 1 2 3 4 5 6 7 8 9
| <?php
$string = trim($_GET['s']);
$array = file('data.txt');
if (!in_array($string, $array)) {
$handler = fOpen('data.txt' , 'a+');
fWrite($handler , "\n" . $string);
fClose($handler);
}
?> |
bzw.:
| PHP-Code: | 1 2 3 4 5 6 7 8
| <?php
$string = trim($_GET['s']);
$array = file('data.txt');
if (!stristr(implode(';', $array), $string . "\n;")) {
array_push($array, strtoLower($string) . "*\n");
file_put_contents('data.txt', implode('', $array));
}
?> |
|
_________________ LG MGoldi |
|
|
| 27 Aug 2010 08:31 |
|
 |
MGoldi Mitglied

|
 |
|
|
Hey Werner,
Dein Script funktioniert (natürlich) doch!! Ich musste es nur ein wenig umändern:
| PHP-Code: | 1 2 3 4 5 6 7 8
| <?php
$string = trim($_GET['s']);
$array = file('data.txt');
if (!stristr(implode("\n", $array), $string)) {
array_push($array, strtolower($string) . "*\n");
file_put_contents('data.txt', implode('', $array));
}
?> |
Jetzt bleibt nur noch die Frage mit dem Filter: Soll ich die Daten beim Eintragen in die Datei filtern oder erst bei der Abfrage??
Und soll ich das dann einfach mit str_replace machen??
Also so:
| PHP-Code: | 1 2 3 4
| <?php
$filter_array = array('der', 'die', 'das', 'dass', 'als', 'und', 'oder');
$string = str_replace(each($filter_array), '', $string);
?> |
|
_________________ LG MGoldi |
|
|
| 28 Aug 2010 18:27 |
|
 |
Werner Homepage-Total.de Moderator

|
 |
|
|
Ein Problem gibt es mit str_replace jedoch,
es werden damit auch Zeichen innerhalb von Suchbegriffen gelöscht.
Kalender, dienstag, hundert, ...
Mein Vorschlag:
| PHP-Code: | 1 2 3 4 5
| <?php
$filter_array = array(' der ', ' die ', ' das ', ' dass ', ' als ', ' und ', ' oder ');
$string = str_replace(each($filter_array), '', " " . $string . " ");
$string = trim($string);
?> |
Zu dem Suchbegriff jeweils ein Leerzeichen am Anfang und am Ende
hinzufügen, damit auch Stopworte am Anfang und am Ende gefildert werden. |
_________________ Bei Fragen oder Fehlermeldungen - Bitte ausführlichen Code posten!
Wie man Fragen richtig stellt |
|
|
| 28 Aug 2010 20:21 |
|
 |
MGoldi Mitglied

|
 |
|
|
Dankke vielmals Werner
Daran habe ich gar nicht gedacht, aber Du denkst immer an solche Sachen
Vielen Dank  |
_________________ LG MGoldi |
|
|
| 28 Aug 2010 20:53 |
|
 |
MGoldi Mitglied

|
 |
|
|
| @Werner: Hast Du eig. auch eine Stoppwortliste und wenn ja, wie viele Wörter sind da drin? |
_________________ LG MGoldi |
|
|
| 28 Aug 2010 21:08 |
|
 |
Werner Homepage-Total.de Moderator

|
 |
|
|
In meinem Script sind ca. 200 Stoppwörter vorhanden.
Stoppwörter findest du » hier |
_________________ Bei Fragen oder Fehlermeldungen - Bitte ausführlichen Code posten!
Wie man Fragen richtig stellt |
|
|
| 29 Aug 2010 08:39 |
|
 |
|