Hallo,
ich moechte eine Volltexsuche realisieren.
Ich habe dazu auch einen entspr. Sourcecode hier irgendwo gefunden (danke :-)) und er funktioniert auch prinzipiell sehr gut.
2 Probleme habe ich allerdings:
1. Ich kann nur einen Suchbegriff eingeben
2. Bei der Trefferanzeige (es handelt sich um ein Linkverzeichnis)
soll auch die URL der jeweiligen Webseite angegeben werden.
Diese sind bisweilen aber sehr lang. Ich würde sie gerne auf
ca. 100 Zeichen begrenzen
Der verwendete Sourcecode lautet wie folgt:
---------------------------------------------
<html><head></head><body bgcolor="#f5f5f5">
<!-- Suchformular -->
<font face=verdana,arial,helvetica size=2>
<form action="baseportal.pl?htx=$htx" method="post" enctype="multipart/form-data">
<input type="hidden" name="show=" value="">
<table border="0" cellpadding="6" cellspacing="0" width="100%" bgcolor="#333399">
<tr>
<td>
<font face="verdana, arial,helvetica" size="2" color="#ffffff">
Suchbegriffe eingeben
</font>
</td>
</tr>
<tr align="left">
<td>
<font face="verdana, arial,helvetica" size="2">
<input type="text" name="Such=" size="30" value="">
<input type="submit" value="Suchen">
</font>
</td>
</tr>
</table>
</form>
<!-- Ende Suchformular -->
<perl>
#######
$db="demo"; # so anpsssen, dass suche nur auf freigegebene Titel!!!!
$link_feld="Titel"; # anpassen ! das, was als Link angezeigt werden soll
# jedes zu durchsuchende Feld muß extra benannt werden !!
$such_feld1="Autor";
$such_feld2="Titel"; # anpassen - z.B. "Text"
$such_feld3="Zusatz";
$such_feld4="Jahr";
$such_feld5="Quelle";
$such_feld6="URL";
# sowie ggf. weitere Felder benennen ----
# $such_feld2="";
# $such_feld3="";
# $such_feld4="";
# u.s.w.
##########
my @Daten;
if ($Such ne "") #falls eine Suchanfrage gestartet wurde
#-------- und das Eingabefeld [Such] nicht leer ist
{
out "Ihr Suchbegriff war =<b>[$Such]</b><br>";
my $i=0;
#- Eingabe von ae, ue oder oe abfangen etc..---
$mSuch = $Such;
$mSuch =~ s/ä/Ä/g;
$mSuch =~ s/ö/Ö/g;
$mSuch =~ s/ü/Ü/g;
$mSuch=lc($mSuch);
$mSuch =~ s/ae/ä/g;
$mSuch =~ s/oe/ö/g;
$mSuch =~ s/ue/ü/g;
#------------------
get "Id==*", "$db";
while(get_next($db))
# gesucht wird z.B. in den Feldern [$such_feldx]---
{
if(
(index($$such_feld1,$Such)>=0 or ($$such_feld1 =~ /$mSuch/gim))
or (index($$such_feld2,$Such)>=0 or ($$such_feld2 =~ /$mSuch/gim))
or (index($$such_feld3,$Such)>=0 or ($$such_feld3 =~ /$mSuch/gim))
or (index($$such_feld4,$Such)>=0 or ($$such_feld4 =~ /$mSuch/gim))
or (index($$such_feld5,$Such)>=0 or ($$such_feld5 =~ /$mSuch/gim))
or (index($$such_feld6,$Such)>=0 or ($$such_feld6 =~ /$mSuch/gim))
#- sowie ggf. weitere -----------------------------
# or (index($$such_feld2,$Such)>=0 or ($$such_feld2 =~ /$mSuch/gim))
# or (index($$such_feld3,$Such)>=0 or ($$such_feld3 =~ /$mSuch/gim))
# or (index($$such_feld4,$Such)>=0 or ($$such_feld4 =~ /$mSuch/gim))
# u.s.w.
)
{
$i++;
$vFelder="@such_feld";
$Daten[$i]="$i.<a href='$_link&htx=$htx&Such=$Such&mSuch=$mSuch
&ID=$_id'>$$link_feld</a><p>";
#- als Link wird der Wert von [$link_feld] ausgegeben ---
}
}
out "<table border=0 cellpadding=4 cellspacing=0><tr><td valign=top>"; # neu von mir
out "<table border=0 cellpadding=2 cellspacing=0 width=300><tr><td bgcolor=#cccccc valign=top><font face=verdana, arial,helvetica size=2>"; # neu von mir
out "<b>Alle Treffer: $i - </b>";
$treffer = $i > 0 ? "Bitte wählen Sie:" : "Leider KEIN Treffer";
out "</font></td></tr>"; # neu von mir
out "<tr><td bgcolor=#eeeeee valign=top><font face=verdana, arial,helvetica size=2>"; # neu von mir
out "$treffer<br>";
out "@Daten";
#- [Vorschau] eines ausgewählten Treffers
if($ID ne "")
{
out "</font></td></tr></table></td>"; # neu von mir
# out "<hr>"; # neu von mir
out "<td valign=top><table border=0 cellpadding=2 cellspacing=0><tr><td>"; # neu von mir
get "Id==!$ID","$db";
# Teffer für jedes [such_feldx]rot markieren
$$such_feld1=~ s/$Such|$mSuch/<font color=red><u>$&<\/u><\/font>/gim;
$$such_feld2=~ s/$Such|$mSuch/<font color=red><u>$&<\/u><\/font>/gim;
$$such_feld3=~ s/$Such|$mSuch/<font color=red><u>$&<\/u><\/font>/gim;
$$such_feld4=~ s/$Such|$mSuch/<font color=red><u>$&<\/u><\/font>/gim;
$$such_feld5=~ s/$Such|$mSuch/<font color=red><u>$&<\/u><\/font>/gim;
$$such_feld6=~ s/$Such|$mSuch/<font color=red><u>$&<\/u><\/font>/gim;
#- sowie ggf. weitere -----------------
# $$such_feld2=~ s/$Such|$mSuch/<font color=red><u>$&<\/u><\/font>/gim;
# $$such_feld3=~ s/$Such|$mSuch/<font color=red><u>$&<\/u><\/font>/gim;
# $$such_feld4=~ s/$Such|$mSuch/<font color=red><u>$&<\/u><\/font>/gim;
# u.s.w.
#-Layout der Vorschau (anpassen) ---
out "<table border=0 cellpadding=2 cellspacing=0><tr><td bgcolor=#cccccc><font size=2 face=verdana,arial,helvetica>";
# out "<b>$$link_feld</b>";
out "<b>Einzeltreffer</b>";
out "</font></td></tr>";
out "<tr><td bgcolor=#eeeeee><font size=2 face=verdana,arial,helvetica>";
out "$$such_feld1";
out "<br>$$such_feld2 - ";
out "$$such_feld3";
out ". - $$such_feld4";
out "<br>Quelle: $$such_feld5";
out "<br>URL: <a href=$$such_feld6 target=_new>$$such_feld6</a>";
out "</font></td></tr></table>";
out "</td></tr></table></td></tr></table>"; # neu von mir
#- sowie ggf. weitere ---
# out "<br>$$such_feld2";
# out "<br>$$such_feld3";
# out "<br>$$such_feld4";
# u.s.w.
}
}
#######
</perl>
</body></html>
-----------------------------------------
Kann mir jemand sagen wo und wie ich diesen Quelltext aendern muss
1. damit ich gleichzeitig nach mehreren Suchbegriffen suchen kann?
2. dass bei der Trefferanzeige die URL der jeweiligen Webseite auf 100 Zeichen (die restlichen Zeichen - falls vorhande - durch "..." angedeutet)
begrenzt wird?
Wär ganz toll, wenn ich ne Amtwort kriegen würde :-))
Vielen Dank im voraus & Gruesse
Ernst