Volltextsuche
Volltextsuche
Hallo,
ich habe die Volltextsuche aus der 4.3 (glaube ich) im die 4.4 eingebaut. Funzt natürlich nicht. Ich bekomme nicht mal das Feld zum Eingeben des suchbegriffes.
Muss hier das Modul auch Datenbankmäßig angepasst werden?
$cfg zu con
oder zu $con
Danke!
Jacke
ich habe die Volltextsuche aus der 4.3 (glaube ich) im die 4.4 eingebaut. Funzt natürlich nicht. Ich bekomme nicht mal das Feld zum Eingeben des suchbegriffes.
Muss hier das Modul auch Datenbankmäßig angepasst werden?
$cfg zu con
oder zu $con
Danke!
Jacke
Hier isser:
Jacke
Code: Alles auswählen
/*Funktion:
Das Modul durchsucht Titel, Kommentar und Content nach den eingegebenen Suchbegriffen. Diese werden per ODER verknüpft.
Geschützte Seiten werden nur bei eingeloggtem User aufgelistet. Die Liste wird nach Anzahl der Treffer sortiert.
Konfiguration:
Schriftart Link und Text gelten jeweils für die Liste der gefundenen Seiten.
Zusatzangaben werden unter dem Link ausgegeben. Bei der Auswahl "Textausschnitt" werden die ersten 100 Zeichen ausgegeben.
Linkziel gibt das Target für den Link an, falls die Seiten in einem anderen Frame oder neuen Fenster angezeigt werden sollen.
Erweiterung:
Das Modul sollte noch um folgende Punkte erweitert werden:
- Anzahl der Links pro Seite einstellbar
- Abwechselnder Tabellenhintergrund einstellbar
- Variabel UND bzw. ODER Verknüpfung bei der Suche (für den User wählbar)
- zu durchsuchender Inhalt (Titel, Kommentar, Text) einstellbar (für User oder Konfiguration)
Falls mir jemand dabei helfen möchte oder das übernehmen möchte... bitte melden (ICQ: 95176001)
History:
04.07.2003 - Anpassung Contenido 4.3.1 Beta - Carsten Hallwachs c.ha@gmx.de
16.09.2002 - Fehlermeldung beseitigt, wenn ein Leerzeichen am Ende des Suchbegriffs stand (danke Svaen)
16.09.2002 - Statt der Zusammenfassung wurde der Titel angezeigt (danke Svaen)
16.09.2002 - Multisort erweitert. (danke Frank)
18.09.2002 - noch etwas MySQL-tauglicher gemacht durch das ersetzen von deutschen Umlauten (danke an Peter)
-------------------------------------------------------------------------------------------------------------------------------
*/
TITEL:
Suchmodul v1
BESCHREIBUNG:
Bietet eine Volltextsuche. Durchsucht Titel,Beschreibung und Content.
(c) webmaster@zu-hause.biz 16.09.2002
INPUT:
echo "
<table align=\"left\" cellpadding=\"0\" cellspacing=\"0\">
<tr valign=\"top\">
<td width=\"202\">Schriftart Link:</td>
<td><select name=\"CMS_VAR[0]\" size=\"1\">";
if ("CMS_VALUE[0]" != 0) {
echo "<option value=\"0\">".$lngForm["nothing"]."</option>";
} else {
echo "<option value=\"0\" selected>".$lngForm["nothing"]."</option>";
}
for ($i=1; $i<=50; $i++) {
if ( $i != "CMS_VALUE[0]" ) {
echo "<option value=\"$i\">Font $i</option>";
} else {
echo "<option value=\"$i\" selected>Font $i</option>";
}
}
echo "
</SELECT></td>
</tr> <tr valign=\"top\">
<td width=\"202\">Schriftart Text:</td>
<td><select name=\"CMS_VAR[1]\" size=\"1\">";
if ("CMS_VALUE[1]" != 0) {
echo "<option value=\"0\">".$lngForm["nothing"]."</option>";
} else {
echo "<option value=\"0\" selected>".$lngForm["nothing"]."</option>";
}
for ($i=1; $i<=50; $i++) {
if ( $i != "CMS_VALUE[1]" ) {
echo "<option value=\"$i\">Font $i</option>";
} else {
echo "<option value=\"$i\" selected>Font $i</option>";
}
}
echo "
</SELECT></td>
</tr> <tr valign=\"top\">
<td width=\"202\">Zusatzangaben: </td>
<td><INPUT TYPE=\"radio\" NAME=\"CMS_VAR[2]\" VALUE=\"0\" ";
if("CMS_VALUE[2]" == 0) {
echo "checked=checked";
}
echo "> nichts <br>
<INPUT TYPE=\"radio\" NAME=\"CMS_VAR[2]\" VALUE=\"1\" ";
if("CMS_VALUE[2]" == 1) {
echo "checked=checked";
}
echo "> Kommentar <br>
<INPUT TYPE=\"radio\" NAME=\"CMS_VAR[2]\" VALUE=\"2\" ";
if("CMS_VALUE[2]" == 2) {
echo "checked=checked";
}
echo "> Textausschnitt </td>
</tr> <tr valign=\"top\">
<td width=\"202\">Linkziel: </td>
<td><INPUT TYPE=\"text\" NAME=\"CMS_VAR[3]\" VALUE=\"CMS_VALUE[3]\"></td>
</tr>
</table>";
OUTPUT:
<?php
echo "<center><table width=\"80%\" border=\"1\"><tr><td align=center>
<form name=\"suche\" method=\"POST\" action=\"".$auth->url()."\" >
<input type=\"text\" size=\"9\" style=\"width:120px\" name=\"suche\" value=\"$suche\">
<INPUT TYPE=\"submit\" VALUE=\"Suchen\"></FORM></td></tr>";
if($suche){
$suche = trim($suche);
$suchregexp = "(".str_replace(" ",")|(",$suche).")";
$s=ereg_replace("ü", "%FC",strtolower($suche));
$s=ereg_replace("ä", "%E4",$s);
$s=ereg_replace("ö", "%F6",$s);
$suchregexp .= "|$s";
$suchliste = explode(" ",strtolower($suche));
$sql = "SELECT A.title AS title,A.idart AS idart,A.summary AS comment,B.idcat AS idcat,C.parentid AS parentid,D.value AS content,A.idartlang AS sideid ";
$sql .= "FROM " . $cfg["tab"]["art_lang"] . " AS A, " . $cfg["tab"]["cat_art"] . " AS B, " . $cfg["tab"]["cat"] . " AS C, " . $cfg["tab"]["content"] . " AS D ";
$sql .= "WHERE A.idart=B.idart AND A.idartlang=D.idartlang AND B.idcat=C.idcat AND C.idclient='$client' AND idlang='$lang' AND online='1'";
$sql .= " AND (D.value REGEXP '$suchregexp' OR A.title REGEXP '$suchregexp' OR A.summary REGEXP '$suchregexp')";
$db->query($sql);
if ($db->num_rows() != 0){
for ($i=0; $i<$db->num_rows(); $i++) {
$db->next_record();
if ($auth->auth["uid"] == "nobody"){
$sql2 = "SELECT public FROM ".$cfg["tab"]["cat_lang"]." WHERE idcat='".$db->f("idcat")."'";
$db2 = new DB_Contenido; $db2->query($sql2); $db2->next_record();
if($db2->f("public") == 0)continue;
}
$num = 0 + $db->f("sideid");
$results[$num][link] = "front_content.php?client=$client&lang=$lang&parent=".$db->f("parentid")."&subid=".$db->f("parentid")."&idcat=".$db->f("idcat")."&idart=".$db->f("idart");
$results[$num][title] = $db->f("title");
switch ("CMS_VALUE[2]") {
case 0: $results[$num][text] = "";break;
case 1: $results[$num][text] = $db->f("comment");break;
case 2: $results[$num][text] .= substr(strip_tags(rawurldecode($db->f("content"))),0,100)."...";
}
for($x=0;$x<count($suchliste);$x++){
$hits[$num] += substr_count(strtolower($db->f("title")), $suchliste[$x]) +
substr_count(strtolower($db->f("comment")), $suchliste[$x]) +
substr_count(strtolower($db->f("content")), $suchliste[$x]);
}
}
if(count($hits) > 0){
$hits = array_values($hits);
$results = array_values($results);
array_multisort ($results, SORT_DESC, SORT_NUMERIC, $hits, SORT_DESC, SORT_NUMERIC);
for ($i=0; $i<count($hits); $i++){
echo "<tr><td align=left><a href=\"".$results[$i][link]."\" id=\"fontCMS_VALUE[0]\"";
if("CMS_VALUE[3]"){echo "TARGET=\"CMS_VALUE[3]\" ";}
echo ">".$results[$i][title]."</a> <span id=\"fontCMS_VALUE[1]\">(".$hits[$i]." Treffer)<BR>";
echo $results[$i][text]."</span></td></tr>";
}
} else { echo "<tr><td align=center>Keine passenden Seiten gefunden</td></tr>"; }
} else { echo "<tr><td align=center>Keine passenden Seiten gefunden</td></tr>"; }
}
echo "</table></center>";
?>
eine frage dazu,,,
dieser beitrag ist zwar schon etwas älter aber vielleicht antwortet mir ja noch jemand:
kann man diese volltextsuche so modifizieren, dass das suchergebnis in einem anderen modul angezeigt wird. oder wenigstens in einer ganz neuen seite.
hat wohl irgendwas mit dem linkziel zu tun, aber wie definiere ich da. blank?
kann man diese volltextsuche so modifizieren, dass das suchergebnis in einem anderen modul angezeigt wird. oder wenigstens in einer ganz neuen seite.
hat wohl irgendwas mit dem linkziel zu tun, aber wie definiere ich da. blank?
Also ich komme auch nicht mit dem Modul zurecht, und die Erklärung weiter oben hilft mir nicht bzw. ich verstehe irgendwas nicht.
Bei mir wird das Suchfeld nicht angezeigt.
Mein Output-Code sieht so aus:
Wär nett, wenn mir jemand helfen kann
Gruß,
#ayshe
Bei mir wird das Suchfeld nicht angezeigt.
Mein Output-Code sieht so aus:
Code: Alles auswählen
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : Volltextsuche
* Author : webmaster@zu-hause.biz
* Copyright :
* Created : 16-09-2002
* Modified : 04-07-2003
************************************************/
echo "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"8\">
<tr><td>Suchbegriff: <b>$suche</b><br></td></tr>";
if($suche){
$suche = trim($suche);
$suchregexp = "(".str_replace(" ",")|(",$suche).")";
$s=ereg_replace("ü", "%FC",strtolower($suche));
$s=ereg_replace("ä", "%E4",$s);
$s=ereg_replace("ö", "%F6",$s);
$suchregexp .= "|$s";
$suchliste = explode(" ",strtolower($suche));
$sql = "SELECT A.title AS title,A.idart AS idart,A.summary AS comment,B.idcat AS idcat,C.parentid AS parentid,D.value AS content,A.idartlang AS sideid ";
$sql .= "FROM " . $cfg["tab"]["art_lang"] . " AS A, " . $cfg["tab"]["cat_art"] . " AS B, " . $cfg["tab"]["cat"] . " AS C, " . $cfg["tab"]["content"] . " AS D ";
$sql .= "WHERE A.idart=B.idart AND A.idartlang=D.idartlang AND B.idcat=C.idcat AND C.idclient='$client' AND idlang='$lang' AND online='1'";
$sql .= " AND (D.value REGEXP '$suchregexp' OR A.title REGEXP '$suchregexp' OR A.summary REGEXP '$suchregexp')";
$db->query($sql);
if ($db->num_rows() != 0){
for ($i=0; $i<$db->num_rows(); $i++) {
$db->next_record();
if ($auth->auth["uid"] == "nobody"){
$sql2 = "SELECT public FROM ".$cfg["tab"]["cat_lang"]." WHERE idcat='".$db->f("idcat")."'";
$db2 = new DB_Contenido; $db2->query($sql2); $db2->next_record();
if($db2->f("public") == 0)continue;
}
$num = 0 + $db->f("sideid");
$results[$num][link] = "front_content.php?client=$client&lang=$lang&parent=".$db->f("parentid")."&subid=".$db->f("parentid")."&idcat=".$db->f("idcat")."&idart=".$db->f("idart");
$results[$num][title] = $db->f("title");
switch ("CMS_VALUE[2]") {
case 0: $results[$num][text] = "";break;
case 1: $results[$num][text] = $db->f("comment");break;
case 2: $results[$num][text] .= substr(strip_tags(rawurldecode($db->f("content"))),0,100)."...";
}
for($x=0;$x<count($suchliste);$x++){
$hits[$num] += substr_count(strtolower($db->f("title")), $suchliste[$x]) +
substr_count(strtolower($db->f("comment")), $suchliste[$x]) +
substr_count(strtolower($db->f("content")), $suchliste[$x]);
}
}
if(count($hits) > 0){
$hits = array_values($hits);
$results = array_values($results);
array_multisort ($results, SORT_DESC, SORT_NUMERIC, $hits, SORT_DESC, SORT_NUMERIC);
for ($i=0; $i<count($hits); $i++){
echo "<tr><td align=left>Seite: <a href=\"".$results[$i][link]."\" class=\"fontCMS_VALUE[0]\"";
if("CMS_VALUE[3]"){echo "TARGET=\"CMS_VALUE[3]\" ";}
echo "><b>".$results[$i][title]."</b></a> <span class=\"fontCMS_VALUE[1]\">(".$hits[$i]." Fundstellen)<BR>";
echo "<i>".$results[$i][text]."</i></span></td></tr>";
}
} else { echo "<tr><td>Keine Seiten gefunden</td></tr>"; }
} else { echo "<tr><tdKeine Seiten gefunden</td></tr>"; }
}
echo "</table>";
?>
Gruß,
#ayshe
Kommentar weglassen und alles klappt bestens
Hatte dasselbe Problem, nachdem ich den Kommentar weggelassen habe klappt jedoch alles bestens! Hier mein Output Code:
[/code]
Code: Alles auswählen
<?php
echo "<center><table width=\"80%\" border=\"1\"><tr><td align=center>
<form name=\"suche\" method=\"POST\" action=\"".$auth->url()."\" >
<input type=\"text\" size=\"9\" style=\"width:120px\" name=\"suche\" value=\"$suche\">
<INPUT TYPE=\"submit\" VALUE=\"Suchen\"></FORM></td></tr>";
if($suche){
$suche = trim($suche);
$suchregexp = "(".str_replace(" ",")|(",$suche).")";
$s=ereg_replace("ü", "%FC",strtolower($suche));
$s=ereg_replace("ä", "%E4",$s);
$s=ereg_replace("ö", "%F6",$s);
$suchregexp .= "|$s";
$suchliste = explode(" ",strtolower($suche));
$sql = "SELECT A.title AS title,A.idart AS idart,A.summary AS comment,B.idcat AS idcat,C.parentid AS parentid,D.value AS content,A.idartlang AS sideid ";
$sql .= "FROM " . $cfg["tab"]["art_lang"] . " AS A, " . $cfg["tab"]["cat_art"] . " AS B, " . $cfg["tab"]["cat"] . " AS C, " . $cfg["tab"]["content"] . " AS D ";
$sql .= "WHERE A.idart=B.idart AND A.idartlang=D.idartlang AND B.idcat=C.idcat AND C.idclient='$client' AND idlang='$lang' AND online='1'";
$sql .= " AND (D.value REGEXP '$suchregexp' OR A.title REGEXP '$suchregexp' OR A.summary REGEXP '$suchregexp')";
$db->query($sql);
if ($db->num_rows() != 0){
for ($i=0; $i<$db->num_rows(); $i++) {
$db->next_record();
if ($auth->auth["uid"] == "nobody"){
$sql2 = "SELECT public FROM ".$cfg["tab"]["cat_lang"]." WHERE idcat='".$db->f("idcat")."'";
$db2 = new DB_Contenido; $db2->query($sql2); $db2->next_record();
if($db2->f("public") == 0)continue;
}
$num = 0 + $db->f("sideid");
$results[$num][link] = "front_content.php?client=$client&lang=$lang&parent=".$db->f("parentid")."&subid=".$db->f("parentid")."&idcat=".$db->f("idcat")."&idart=".$db->f("idart");
$results[$num][title] = $db->f("title");
switch ("CMS_VALUE[2]") {
case 0: $results[$num][text] = "";break;
case 1: $results[$num][text] = $db->f("comment");break;
case 2: $results[$num][text] .= substr(strip_tags(rawurldecode($db->f("content"))),0,100)."...";
}
for($x=0;$x<count($suchliste);$x++){
$hits[$num] += substr_count(strtolower($db->f("title")), $suchliste[$x]) +
substr_count(strtolower($db->f("comment")), $suchliste[$x]) +
substr_count(strtolower($db->f("content")), $suchliste[$x]);
}
}
if(count($hits) > 0){
$hits = array_values($hits);
$results = array_values($results);
array_multisort ($results, SORT_DESC, SORT_NUMERIC, $hits, SORT_DESC, SORT_NUMERIC);
for ($i=0; $i<count($hits); $i++){
echo "<tr><td align=left><a href=\"".$results[$i][link]."\" id=\"fontCMS_VALUE[0]\"";
if("CMS_VALUE[3]"){echo "TARGET=\"CMS_VALUE[3]\" ";}
echo ">".$results[$i][title]."</a> <span id=\"fontCMS_VALUE[1]\">(".$hits[$i]." Treffer)<BR>";
echo $results[$i][text]."</span></td></tr>";
}
} else { echo "<tr><td align=center>Keine passenden Seiten gefunden</td></tr>"; }
} else { echo "<tr><td align=center>Keine passenden Seiten gefunden</td></tr>"; }
}
echo "</table></center>";
?>
Suche mit ohne + zeichen
Mit urlrecode sieht das ganze dann so aus:
Code: Alles auswählen
<?php
echo "<center><table width=\"80%\" border=\"1\"><tr><td align=center>
<form name=\"suche\" method=\"POST\" action=\"".$auth->url()."\" >
<input type=\"text\" size=\"9\" style=\"width:120px\" name=\"suche\" value=\"$suche\">
<INPUT TYPE=\"submit\" VALUE=\"Suchen\"></FORM></td></tr>";
if($suche){
$suche = trim($suche);
$suchregexp = "(".str_replace(" ",")|(",$suche).")";
$s=ereg_replace("ü", "%FC",strtolower($suche));
$s=ereg_replace("ä", "%E4",$s);
$s=ereg_replace("ö", "%F6",$s);
$suchregexp .= "|$s";
$suchliste = explode(" ",strtolower($suche));
$sql = "SELECT A.title AS title,A.idart AS idart,A.summary AS comment,B.idcat AS idcat,C.parentid AS parentid,D.value AS content,A.idartlang AS sideid ";
$sql .= "FROM " . $cfg["tab"]["art_lang"] . " AS A, " . $cfg["tab"]["cat_art"] . " AS B, " . $cfg["tab"]["cat"] . " AS C, " . $cfg["tab"]["content"] . " AS D ";
$sql .= "WHERE A.idart=B.idart AND A.idartlang=D.idartlang AND B.idcat=C.idcat AND C.idclient='$client' AND idlang='$lang' AND online='1'";
$sql .= " AND (D.value REGEXP '$suchregexp' OR A.title REGEXP '$suchregexp' OR A.summary REGEXP '$suchregexp')";
$db->query($sql);
if ($db->num_rows() != 0){
for ($i=0; $i<$db->num_rows(); $i++) {
$db->next_record();
if ($auth->auth["uid"] == "nobody"){
$sql2 = "SELECT public FROM ".$cfg["tab"]["cat_lang"]." WHERE idcat='".$db->f("idcat")."'";
$db2 = new DB_Contenido; $db2->query($sql2); $db2->next_record();
if($db2->f("public") == 0)continue;
}
$num = 0 + $db->f("sideid");
$results[$num][link] = "front_content.php?client=$client&lang=$lang&parent=".$db->f("parentid")."&subid=".$db->f("parentid")."&idcat=".$db->f("idcat")."&idart=".$db->f("idart");
$results[$num][title] = $db->f("title");
switch ("CMS_VALUE[2]") {
case 0: $results[$num][text] = "";break;
case 1: $results[$num][text] = $db->f("comment");break;
case 2: $results[$num][text] .= substr(strip_tags(rawurldecode($db->f("content"))),0,100)."...";
}
for($x=0;$x<count($suchliste);$x++){
$hits[$num] += substr_count(strtolower($db->f("title")), $suchliste[$x]) +
substr_count(strtolower($db->f("comment")), $suchliste[$x]) +
substr_count(strtolower($db->f("content")), $suchliste[$x]);
}
}
if(count($hits) > 0){
$hits = array_values($hits);
$results = array_values($results);
array_multisort ($results, SORT_DESC, SORT_NUMERIC, $hits, SORT_DESC, SORT_NUMERIC);
for ($i=0; $i<count($hits); $i++){
echo "<tr><td align=left><a href=\"".$results[$i][link]."\" id=\"fontCMS_VALUE[0]\"";
if("CMS_VALUE[3]"){echo "TARGET=\"CMS_VALUE[3]\" ";}
echo ">".$results[$i][title]."</a> <span id=\"fontCMS_VALUE[1]\">(".$hits[$i]." Treffer)<BR>";
echo urldecode($results[$i][text])."</span></td></tr>";
}
} else { echo "<tr><td align=center>Keine passenden Seiten gefunden</td></tr>"; }
} else { echo "<tr><td align=center>Keine passenden Seiten gefunden</td></tr>"; }
}
echo "</table></center>";
?>