|
|
|
Webfan
|
« am: 26 Oktober 2011, 17:52:47 » |
|
Hallo  Webfan veröffentlich heute ein weiteres PragmaMx Modul: Das neue Modul ermöglicht eine modulübergreifende Suche im PragmaMx. Das "Ranking" und andere Einstellungen können in der Suche.config.php frei konfiguriert werden. Das hinzufügen neuer Module zur Suche ist ganz einfach in 2 Schritten möglich: 1) Anhand der Vorlagen in der Suche.functions.php eine Funktion erstellen 2) Modul in Suche.config.php entsprechend hinzufügen Demo: http://outshop.de (Suchfeld links) Viel Spaß  Achja, fast vergessen: Download: http://www.webfan.de/Downloads-lid-Suche-Suchemodul-fuer-das-PragmaMx-58.html
|
|
|
|
|
Gespeichert
|
|
|
|
|
|
|
Webfan
|
« Antworten #1 am: 26 Oktober 2011, 18:10:26 » |
|
Ooops, hab noch was vergessen, bitte mit dem DL 15min warten... EDIT: So fertig! (hatte vergessen eine Funktion deadyoumean von algebre auch aufzurufen, Download ist korrigiert) Nochmal Edit: Natürlich heißt die Funktion nicht "dead"you mean  sondern did
|
|
|
|
« Letzte Änderung: 26 Oktober 2011, 18:20:50 von Webfan »
|
Gespeichert
|
|
|
|
|
|
|
trulla
|
« Antworten #2 am: 26 Oktober 2011, 21:12:34 » |
|
 MySQL meldet:
#1071 - Specified key was too long; max key length is 1000 bytes Eine Datenbank wird dennoch angelegt, aber die Suche funktioniert nicht
|
|
|
|
|
Gespeichert
|
ß
|
|
|
|
|
|
Webfan
|
« Antworten #3 am: 27 Oktober 2011, 02:39:33 » |
|
Moin, CREATE TABLE `{prefix}_suche_cache` ( `query` TEXT NOT NULL , `url` TEXT NOT NULL , `preview` TEXT NOT NULL , `module` VARCHAR( 255 ) NOT NULL , `ranking` DECIMAL( 20, 2 ) NOT NULL DEFAULT '0', `time` TEXT NOT NULL ) ENGINE = MYISAM ; ALTER TABLE `{prefix}_suche_cache` ADD PRIMARY KEY ( `query` ( 480 ) , `url` ( 480 ) ) ; ALTER TABLE `{prefix}_suche_cache` ADD `title` VARCHAR( 255 ) NOT NULL ; Ändere das ganze mal wie folgt ab: CREATE TABLE `{prefix}_suche_cache` ( `query` VARCHAR( 255 ) NOT NULL , `url` VARCHAR( 255 ) NOT NULL , `preview` TEXT NOT NULL , `module` VARCHAR( 255 ) NOT NULL , `ranking` DECIMAL( 20, 2 ) NOT NULL DEFAULT '0', `time` TEXT NOT NULL, `title` VARCHAR( 255 ) NOT NULL ) ENGINE = MYISAM ; ALTER TABLE `{prefix}_suche_cache` ADD PRIMARY KEY ( `query`, `url` ) ; So oder so ähnlich, vielleicht weiß jemand besseren Rat, was man für Felder nehmen sollte  , kommt drauf an wie lang die urls sein dürfen und der Suchquery...!? mfg
|
|
|
|
|
Gespeichert
|
|
|
|
|
|
|
trulla
|
« Antworten #4 am: 27 Oktober 2011, 07:37:38 » |
|
 Guten Morgen die schlechte Nachricht: Die Fehlermeldung ist die gleiche Gute Nachricht: die Suche funzt trotzdem ------------------ nächste Frage: um auch die Rezepte zu durchsuchen habe ich folgenden code gefunden 'Rezept' => array( 1,1, 'funcSucheMod_Rezept' ), Muss ich mir in der Suche_functions.php nun noch selbst eine Funktion basteln, damit diese auch durchsucht werden?
|
|
|
|
|
Gespeichert
|
ß
|
|
|
|
|
|
Webfan
|
« Antworten #5 am: 27 Oktober 2011, 09:30:34 » |
|
die schlechte Nachricht: Die Fehlermeldung ist die gleiche Gute Nachricht: die Suche funzt trotzdem Du solltest unbedingt die Felder "query" und "url" zusammen als Primary Key setzen. Wenn mein Code dazu nicht funzt (sorry), logge Dich in phpMyAdmin ein - wähle die TAbelle _suche_cache - Klicke oben den Reiter "Struktur" - Suche das Feld "Index über 2 Spalten anlegen - Wähle als Key Primary und als Felder "url" und "query" - Versuche die größtmögliche Keygrösse einzustellen um auch die Rezepte zu durchsuchen habe ich folgenden code gefunden 'Rezept' => array( 1,1, 'funcSucheMod_Rezept' ),
Muss ich mir in der Suche_functions.php nun noch selbst eine Funktion basteln, damit diese auch durchsucht werden? Ja, das mußt Du. Leider bin ich noch nicht dazu gekommen das Rezeptmodul zu implementieren, ich werde es mir aber die Tage runterladen und eine Funktion bereitstellen, sorry das es nicht früher geht, vielleicht ist aber auch jemand anderes schneller damit? Aber ich notiers mir... mfg
|
|
|
|
|
Gespeichert
|
|
|
|
|
|
|
trulla
|
« Antworten #6 am: 27 Oktober 2011, 12:05:56 » |
|
 ich krieg das nicht hin MySQL meldet:
#1089 - Incorrect sub part key; the used key part isn't a string, the used length is longer than the key part, or the storage engine doesn't support unique sub keys
|
|
|
|
|
Gespeichert
|
ß
|
|
|
|
|
|
Webfan
|
« Antworten #7 am: 27 Oktober 2011, 12:31:17 » |
|
Wenn Du das Menü um den Key einzustellen aufrufst, mußt Du jweils in das erste Feld (per Selectbox) das Feld auswählen im Feld rechts daneben die Keylength eintragen. the used length is longer than the key part Sorry, vielleicht war meine Aussage oben mißverständlich, mit TEXT als Feldtyp probiere die größtmögliche Keygröße, wenn VARCHAR versuche mal 256 als Keygröße, oder bzw. das Feld Keygröße einfach leerlassen. Wenn das alles nichts fruchtet, sende mir mal bitte Deine phpMyAdmin Zugangsdaten per Mail, ich schaue mir das dann heute abend mal an (bin jetzt erstmal gleich weg vom PC). Viele Grüße 
|
|
|
|
|
Gespeichert
|
|
|
|
|
|
|
anmShinichi
|
« Antworten #8 am: 27 Oktober 2011, 16:07:21 » |
|
So Simple wie genial... An eine Suche dieser Art habe ich nicht gedacht, sie zu haben, ist aber Gold wert. Ich habe kein Gold für dich, aber erstmal auf jeden Fall ein großes DANKE SCHÖN.
Werde es bei uns installieren und einrichten.
LG
|
|
|
|
|
Gespeichert
|
|
|
|
|
|
|
Webfan
|
« Antworten #9 am: 27 Oktober 2011, 17:59:17 » |
|
@anmShinichi: Danke für das Lob  @petra: Problem war folgendes: Deine Tabelle hatte die Kollation utf8_, das belegt 3byte pro Zeichen. Ich habe jetzt die Kollation auf latin_swedish umgestellt, die beiden PK Felder sind jetzt VARCHAR (255) mit entsprechend langem Key. Du kannst jetzt - entweder es einfach so lassen - wenn längere Texte gewünscht sind, die Felder auf TEXT und Key Länge jweils 500 einstellen - wenn utf8 gewünscht ist, die Tabelle wieder auf utf8 umstellen, und die Keylength auf jeweils auf bis zu 166 setzen (wenn ich mich nicht verrechnet hab) Wenn ich eines der obigen Dinge für Dich tun soll, laß es mich wissen. mfg
|
|
|
|
|
Gespeichert
|
|
|
|
|
|
|
trulla
|
« Antworten #10 am: 27 Oktober 2011, 19:53:45 » |
|
Danke für deine Mühe, aber die Suche findet nicht einen Begriff, den ich eingebe. Ich fürchte, da stimmt immer noch was nicht
|
|
|
|
|
Gespeichert
|
ß
|
|
|
|
|
|
Webfan
|
« Antworten #11 am: 27 Oktober 2011, 19:57:01 » |
|
 ich schaus mir an, moment bitte...
|
|
|
|
|
Gespeichert
|
|
|
|
|
|
|
|
|
trulla
|
« Antworten #13 am: 27 Oktober 2011, 20:28:13 » |
|
Danke, nun funktioniert die Suche. 
|
|
|
|
|
Gespeichert
|
ß
|
|
|
|
|
|
Webfan
|
« Antworten #14 am: 29 Oktober 2011, 07:42:29 » |
|
Moin, eine mögliche Funktion um das Rezeptmodul in das Suchmodul zu implementieren könnte wie folgt aussehen. Achtung: Ich habe das Rezeptmodul nicht installiert und die Funktion nicht getestet, Fehler bitte hier melden. Einzufügen in die Suche.functions.php: ##################################################################################### function funcSucheMod_Rezept($cq, $q, $rankingDEF) { global $prefix; global $SucheSettingsDefault;
$sqlq="SELECT * FROM ".$prefix."_recipes WHERE recipename LIKE '%".mxAddSlashesForSQL(strip_tags($q))."%' OR description LIKE '%".mxAddSlashesForSQL(strip_tags($q))."%' OR ingredients LIKE '%".mxAddSlashesForSQL(strip_tags($q))."%' OR directions LIKE '%".mxAddSlashesForSQL(strip_tags($q))."%' OR nutrition LIKE '%".mxAddSlashesForSQL(strip_tags($q))."%' OR tipps LIKE '%".mxAddSlashesForSQL(strip_tags($q))."%' OR catname LIKE '%".mxAddSlashesForSQL(strip_tags($q))."%' "; $result = sql_query($sqlq); while($row = sql_fetch_array($result) ) { $ranking = $rankingDEF;
if($cq == $q)$ranking = $ranking + _SUCHE_RANKING_COMPLETE_QUERY_;
$countwords= substr_count($row['recipename'], strip_tags($q)); $ranking = $ranking + ($countwords * _SUCHE_RANKING_TITLE_MATCH_);
$countwords= substr_count($row['catname'], strip_tags($q)); $ranking = $ranking + ($countwords * _SUCHE_RANKING_TITLE_MATCH_);
$countwords= substr_count($row['description'], strip_tags($q)); $ranking = $ranking + ($countwords * _SUCHE_RANKING_TEXT_MATCH_); $countwords= substr_count($row['ingredients'], strip_tags($q)); $ranking = $ranking + ($countwords * _SUCHE_RANKING_TEXT_MATCH_); $countwords= substr_count($row['directions'], strip_tags($q)); $ranking = $ranking + ($countwords * _SUCHE_RANKING_TEXT_MATCH_); $countwords= substr_count($row['nutrition'], strip_tags($q)); $ranking = $ranking + ($countwords * _SUCHE_RANKING_TEXT_MATCH_); $countwords= substr_count($row['tipps'], strip_tags($q)); $ranking = $ranking + ($countwords * _SUCHE_RANKING_TEXT_MATCH_);
$contentpreview = substr(strip_tags($row['description']), 0, strlen($q) ).'... .... ' .substr(strip_tags($row['description']), strnpos(strip_tags($row['description']), strip_tags($q), 1), 580).'...';
if(!preg_match("/".$q."/", $row['description'])) { $contentpreview = substr(strip_tags($row['ingredients']), 0, strlen($q) ).'... .... ' .substr(strip_tags($row['ingredients']), strnpos(strip_tags($row['ingredients']), strip_tags($q), 1), 580).'...'; }
if(!preg_match("/".$q."/", $row['ingredients'])) { $contentpreview = substr(strip_tags($row['directions']), 0, strlen($q) ).'... .... ' .substr(strip_tags($row['directions']), strnpos(strip_tags($row['directions']), strip_tags($q), 1), 580).'...'; } if(!preg_match("/".$q."/", $row['directions'])) { $contentpreview = substr(strip_tags($row['nutrition']), 0, strlen($q) ).'... .... ' .substr(strip_tags($row['nutrition']), strnpos(strip_tags($row['nutrition']), strip_tags($q), 1), 580).'...'; } if(!preg_match("/".$q."/", $row['nutrition'])) { $contentpreview = substr(strip_tags($row['tipps']), 0, strlen($q) ).'... .... ' .substr(strip_tags($row['tipps']), strnpos(strip_tags($row['tipps']), strip_tags($q), 1), 580).'...'; } $contentpreview = str_ireplace("".strip_tags($q)."", '<font style="'._SUCHE_HIGHLIGHT_FONTSTYLE_.'">' .strip_tags($q). '</font>', strip_tags($contentpreview) );
$link = 'modules.php?name=recipes&recipe='.$row['id'];
$sqlq2="INSERT INTO ".$prefix._SUCHE_TABLENAME_CACHE_." SET query='".mxAddSlashesForSQL(strip_tags($cq))."', url='".mxAddSlashesForSQL(strip_tags($link))."', preview='".mxAddSlashesForSQL($contentpreview)."', module='recipes', ranking='".mxAddSlashesForSQL(strip_tags($ranking))."', time='".intval(_SUCHE_JETZT_SEKUNDEN_)."', title='".mxAddSlashesForSQL(strip_tags($row['recipename']))."' "; sql_query($sqlq2); }
} ##################################################################################### Einzufügen in die Suche.config.php in das $SucheSettingsDefault Array: 'Rezept' => array( 1,1, 'funcSucheMod_Rezept' ), Ranking: Wenn gewollt ist, daß das Suchmodul eine höhere Gewichtung bei der Suche erhält kann das zweite Array Element erhöht werden, z.B.: 'Rezept' => array( 0,1.5, 'funcSucheMod_Rezept' ), Wichtiger Hinweis zum Suchmodul:Was ich noch nicht geschrieben habe, aber beachtet werden sollte: Je nach Suchanfragen können in der cache Tabelle erhebliche Datenvolumen entstehen, es sollte also noch Datenbankspeicher in bis zu etwa 50-100% der Größe der bisherigen PMX Tabellen zur Verfügung stehen (oder mehr). 
|
|
|
|
|
Gespeichert
|
|
|
|
|
|
|
trulla
|
« Antworten #15 am: 29 Oktober 2011, 10:38:39 » |
|
 Guten Morgen, leider klappt das nicht. Das Rezeptmodul wird so nicht durchsucht.
|
|
|
|
|
Gespeichert
|
ß
|
|
|
|
|
|
Webfan
|
« Antworten #16 am: 29 Oktober 2011, 10:53:46 » |
|
Mh  Hast Du mal geschaut, ob Du über den Debug Mode Meldungen erhälst? mfg
|
|
|
|
|
Gespeichert
|
|
|
|
|
|
|
Webfan
|
« Antworten #17 am: 29 Oktober 2011, 10:57:32 » |
|
...Aber ich hab eine Idee... Kann es sein, daß das Feld catname nicht im recipies Table vorhanden ist, sondern nur in der cat Tabelle? Versuche mal den Query umzuändern auf: $sqlq="SELECT * FROM ".$prefix."_recipes WHERE recipename LIKE '%".mxAddSlashesForSQL(strip_tags($q))."%' OR description LIKE '%".mxAddSlashesForSQL(strip_tags($q))."%' OR ingredients LIKE '%".mxAddSlashesForSQL(strip_tags($q))."%' OR directions LIKE '%".mxAddSlashesForSQL(strip_tags($q))."%' OR nutrition LIKE '%".mxAddSlashesForSQL(strip_tags($q))."%' OR tipps LIKE '%".mxAddSlashesForSQL(strip_tags($q))."%' "; mfg
|
|
|
|
|
Gespeichert
|
|
|
|
|
|
|
trulla
|
« Antworten #18 am: 29 Oktober 2011, 11:25:30 » |
|
 So klappt es . Eins irritiert mich noch. Ranking: Wenn gewollt ist, daß das Suchmodul eine höhere Gewichtung bei der Suche erhält kann das zweite Array Element erhöht werden, z.B.: 'Rezept' => array( 0,1.5, 'funcSucheMod_Rezept' ),
Muss es nicht heissen (1,1.5, 'funcSucheMod_Rezept' ), Funktioniern allerdings beide Varianten. Allerdings gebe ich Kürbis ein, müsste dann Nicht Kürbiseintopf ganz oben stehen? Vor einem Begriff aus dem Contentmodul?
|
|
|
|
|
Gespeichert
|
ß
|
|
|
|
|
|
Webfan
|
« Antworten #19 am: 29 Oktober 2011, 11:44:37 » |
|
Ranking: Wenn gewollt ist, daß das Suchmodul eine höhere Gewichtung bei der Suche erhält kann das zweite Array Element erhöht werden, z.B.: 'Rezept' => array( 0,1.5, 'funcSucheMod_Rezept' ),
Muss es nicht heissen (1,1.5, 'funcSucheMod_Rezept' ), Hä? Wo ist denn da der Unterscheid= 'Rezept' => muß aufjedenfall da stehe, daß is der Key des Modul Arrays, jedes Element ist auch wieder ein Array: $SucheSettingsDefault = array( //Core... 'News' => array( 1,1, 'funcSucheMod_News' ), 'Userinfo' => array( 1,1, 'funcSucheMod_Userinfo' ), 'Sections' => array( 1,1, 'funcSucheMod_Sections' ), 'comments' => array( 1,1, 'funcSucheMod_comments' ), 'Content' => array( 1,1.5, 'funcSucheMod_Content' ), 'Topics' => array( 1,1, 'funcSucheMod_Topics' ), 'Downloads' => array( 1,1, 'funcSucheMod_Downloads' ), 'Web_Links' => array( 1,1, 'funcSucheMod_Web_Links' ), 'Rezept' => array( 1,1, 'funcSucheMod_Rezept' ), //Addons... 'Annoncen' => array( 1,1, 'funcSucheMod_Annoncen' ), //Addons Todo.. //'eBoard' => array( 0,1, 'funcSucheMod_eBoard' ), //'My_eGallery' => array( 0,1, 'funcSucheMod_My_eGallery' ), //'SMF' => array( 0,1, 'funcSucheMod_SMF' ), 'Rezept' => array( 1,1, 'funcSucheMod_Rezept' ), //'Reviews' => array( 0,1, 'funcSucheMod_Reviews' ), ); oder halt 'Rezept' => array( 1,1.5, 'funcSucheMod_Rezept' ), oder 'Rezept' => array( 1,XX.XX, 'funcSucheMod_Rezept' ), ---------- EDIT: Ich hab den Unteschied jetz gesehen (oben )  NAtürlich muß zuerst eine 1 da stehen! ----------- Funktioniern allerdings beide Varianten. Allerdings gebe ich Kürbis ein, müsste dann Nicht Kürbiseintopf ganz oben stehen? Vor einem Begriff aus dem Contentmodul? Aaaalso... Der oben genannte Wert ist das "Default Ranking" des betreffenden Moduls. Nehmen wir an, 'News' => array( 1,4, 'funcSucheMod_News' ), 'Rezept' => array( 1,5, 'funcSucheMod_Rezept' ), Im obigen Beispiel würde jeder Treffer im News Modul zunächst das Ranking 4 und ein Treffer im Rezeptmodul das Ranking 5 erhalten. - Nehmen wir an wir landen also einen Treffer in der Rezepttabelle, dann erhält der Link zunmächst das Ranking 5. Dann wird der Inhalt des Treffers untersuccht, hierzu steht in der Config: /* The following value will be added to a search engine results ranking if the COMPLETE query matches */ define('_SUCHE_RANKING_COMPLETE_QUERY_', 6.55);
/* +ranking for title match */ define('_SUCHE_RANKING_TITLE_MATCH_', 1.8);
/* +ranking for text match */ define('_SUCHE_RANKING_TEXT_MATCH_', 1); Bdeutet jeweils: _SUCHE_RANKING_COMPLETE_QUERY_: Wenn der GESAMTE Suchbegriff geunden wurde (konträr zu nur einem Wort des Suchqueries) werden zum Ranking _SUCHE_RANKING_TEXT_MATCH_ Punkte hinzuaddiert. _SUCHE_RANKING_TITLE_MATCH_: Nehmen wir an das Suchwort kommt 2x im Titel vor, dann wird 2 * _SUCHE_RANKING_TITLE_MATCH_zum Ranking hiunzuaddiet. _SUCHE_RANKING_TEXT_MATCH_: Nehmen wir an das Suchwort kommt Xmal im Text vor,dann wird X * _SUCHE_RANKING_TEXT_MATCH_ zum Ranking hinzuaddiert. Außerdem gilt zu beachten:Das Suchergebniss wird _SUCHE_CACHE_EXPIRE_Sekunden lang gecached, daß heißt, Du mußt _SUCHE_CACHE_EXPIRE_ Sekunden warten um eine Veränderung zu sehen, wenn Du nach dem gleichen Suchquery suchst. EDIT: Ich hab den Unteschied jetz gesehen (oben )  NAtürlich muß zuerst eine 1 da stehen!
|
|
|
|
« Letzte Änderung: 29 Oktober 2011, 11:49:16 von Webfan »
|
Gespeichert
|
|
|
|
|
|
|
trulla
|
« Antworten #20 am: 29 Oktober 2011, 11:52:14 » |
|
 Gut, also dann funktioniert alles.
|
|
|
|
|
Gespeichert
|
ß
|
|
|
|
|
|
Webfan
|
« Antworten #21 am: 04 November 2011, 10:52:12 » |
|
Moin, @Pragma Team: Habt Ihr schon das Modul angeschaut? *...mal vorsichtig nachfrag..* Wenn es Kritikpunkte gibt, bitte ich um eine Mitteilung. Außerdem bitte ich darum, sollte der DL freigeschaltet werden, folgenden Hinweis von oben in der Beschreibung zu ergänzen: "Hinweis: Je nach Suchanfragen können in der cache Tabelle erhebliche Datenvolumen entstehen, es sollte also noch Datenbankspeicher in bis zu etwa 50-100% der Größe der bisherigen PMX Tabellen zur Verfügung stehen (oder mehr)." Danke für Eure Mühen  ...Bitte nicht gedrängelt fühlen, ich bin halt ein neugieriger Mensch 
|
|
|
|
|
Gespeichert
|
|
|
|
|
|
|
Webfan
|
« Antworten #22 am: 29 November 2011, 07:08:45 » |
|
Moin, hallo, hallo  Die did you mean Funktion von algebre funktioniert nicht mehr, da Google wohl was geändert hat. Die neue Lösung ist noch nicht so weit das ich sie veröffentlichen kann. Ansonsten hab ich bisher nix zu verbessern gefunden...? 
|
|
|
|
|
Gespeichert
|
|
|
|
|
|
|
shorty
|
« Antworten #23 am: 14 Dezember 2011, 03:15:43 » |
|
hello  Thanks for your job  But it's not work for me, i've the same error : Specified key was too long; max key length is 1000 bytes and i don't know how do for add good tables config This what my dumper tool tell me Table `mxtradz_suche_cache`
Fields of table `mxtradz_suche_cache` créer nouveau champs
Field Type Size NULL Key Attribute Default Extra Tri Commentaire edit field delete field 1. query text non utf8_general_ci edit field delete field 2. url text non utf8_general_ci edit field delete field 3. preview text non utf8_general_ci edit field delete field 4. module varchar 255 non utf8_general_ci edit field delete field 5. ranking decimal 20,2 non 0.00 edit field delete field 6. time text non utf8_general_ci
Indices de la table `mxtradz_suche_cache` Nom colonnes Taille Type Permettre la duplication Cardinalité Commentaire La table ne contient aucun indice Thanks you for your support Regards
|
|
|
|
|
Gespeichert
|
|
|
|
|
|
|
Webfan
|
« Antworten #24 am: 14 Dezember 2011, 06:48:48 » |
|
Hello shorty, if you use utf8 collation the max keysize for url and query would be 166. So try to install the tables and then create a primary key url and query with size 166. 
|
|
|
|
|
Gespeichert
|
|
|
|
|
|
|
shorty
|
« Antworten #25 am: 15 Dezember 2011, 03:21:55 » |
|
Ok, thanks, it's working for me now  But it's not work with smf forums  i've tried to modify this 'SMF' => array( 0,1, 'funcSucheMod_SMF' ), to 'SMF' => array( 1,1, 'funcSucheMod_SMF' ), and i don't see smf lines into Suche.functions.php This mod will be perfect if it's integrate SMF & Coppermine/Sirius & more mods I've also tried : function funcSucheMod_Forum($cq, $q, $rankingDEF) { global $prefix; global $SucheSettingsDefault;
$sqlq="SELECT * FROM my_forum_prefix_smf_topics WHERE titel LIKE '%".mxAddSlashesForSQL(strip_tags($q))."%' OR beschreibung LIKE '%".mxAddSlashesForSQL(strip_tags($q))."%' OR keywords LIKE '%".mxAddSlashesForSQL(strip_tags($q))."%' "; $result = sql_query($sqlq); while($row = sql_fetch_array($result) ) { $ranking = $rankingDEF; if($cq == $q)$ranking = $ranking + _SUCHE_RANKING_COMPLETE_QUERY_;
$countwords= substr_count($row['titel'], strip_tags($q)); $ranking = $ranking + ($countwords * _SUCHE_RANKING_TITLE_MATCH_); $countwords= substr_count($row['beschreibung'], strip_tags($q)); $ranking = $ranking + ($countwords * _SUCHE_RANKING_TEXT_MATCH_);
$contentpreview = substr(strip_tags($row['beschreibung']), 0, strlen($q) ).'... .... ' .substr(strip_tags($row['beschreibung']), strnpos(strip_tags($row['beschreibung']), strip_tags($q), 1), 580).'...';
$contentpreview = str_ireplace("".strip_tags($q)."", '<font style="'._SUCHE_HIGHLIGHT_FONTSTYLE_.'">' .strip_tags($q). '</font>', strip_tags($contentpreview) ); $link = 'modules.php?action=search2&name=Forum&search='.$row['id']; $sqlq2="INSERT INTO ".$prefix._SUCHE_TABLENAME_CACHE_." SET query='".mxAddSlashesForSQL(strip_tags($cq))."', url='".mxAddSlashesForSQL(strip_tags($link))."', preview='".mxAddSlashesForSQL($contentpreview)."', module='Forum', ranking='".mxAddSlashesForSQL(strip_tags($ranking))."', time='".intval(_SUCHE_JETZT_SEKUNDEN_)."', title='".mxAddSlashesForSQL(strip_tags($row['titel']))."' "; sql_query($sqlq2); }
} But it's not work note : the prefix of this smf forum is different than prefix of the website
|
|
|
|
« Letzte Änderung: 15 Dezember 2011, 03:49:57 von shorty »
|
Gespeichert
|
|
|
|
|
|
|
Webfan
|
« Antworten #26 am: 15 Dezember 2011, 03:50:57 » |
|
Sorry, maybe I will add it later but for now you have to add mods for your own in Suche.functions.php, like the existing examples.
|
|
|
|
|
Gespeichert
|
|
|
|
|
|
|
shorty
|
« Antworten #27 am: 15 Dezember 2011, 06:12:14 » |
|
ok i understand  , i hope you will have the time to do this. the mod will be complete after smf integration. Algebre do it into this topic http://www.pragmamx.fr/Forum-topic-1484.htmlbut the different search are separate. I don't know how adapt this part of mods into you script to have one request and all results of differents modules in one page
|
|
|
|
|
Gespeichert
|
|
|
|
|
|
|
Webfan
|
« Antworten #28 am: 20 Dezember 2011, 16:31:47 » |
|
Version 1.0.2.0: http://www.webfan.de/Downloads-lid-Suche-Suchemodul-fuer-das-PragmaMx-58.htmlchanges: - did you mean disabled by default - rezepte modul search - smf modul search (I did not tested it so far, unsure about $link?) ##################################################################################### function funcSucheMod_SMF($cq, $q, $rankingDEF) { global $prefix; global $SucheSettingsDefault;
$sqlq="SELECT * FROM ".$prefix."_smf_messages WHERE subject LIKE '%".mxAddSlashesForSQL(strip_tags($q))."%' OR body LIKE '%".mxAddSlashesForSQL(strip_tags($q))."%' ";
$result = sql_query($sqlq); while($row = sql_fetch_array($result) ) { $ranking = $rankingDEF;
if($cq == $q)$ranking = $ranking + _SUCHE_RANKING_COMPLETE_QUERY_;
$countwords= substr_count($row['subject'], strip_tags($q)); $ranking = $ranking + ($countwords * _SUCHE_RANKING_TITLE_MATCH_);
$countwords= substr_count($row['body'], strip_tags($q)); $ranking = $ranking + ($countwords * _SUCHE_RANKING_TEXT_MATCH_);
$contentpreview = substr(strip_tags($row['body']), 0, strlen($q) ).'... .... ' .substr(strip_tags($row['body']), strnpos(strip_tags($row['body']), strip_tags($q), 1), 580).'...';
$contentpreview = str_ireplace("".strip_tags($q)."", '<font style="'._SUCHE_HIGHLIGHT_FONTSTYLE_.'">' .strip_tags($q). '</font>', strip_tags($contentpreview) );
$link='modules.php?name=Forum&topic='.$row['ID_TOPIC'].'&start=msg'.$row['ID_MSG'].'#msg'.$row['ID_MSG'].'';
$sqlq2="INSERT INTO ".$prefix._SUCHE_TABLENAME_CACHE_." SET query='".mxAddSlashesForSQL(strip_tags($cq))."', url='".mxAddSlashesForSQL(strip_tags($link))."', preview='".mxAddSlashesForSQL($contentpreview)."', module='SMF', ranking='".mxAddSlashesForSQL(strip_tags($ranking))."', time='".intval(_SUCHE_JETZT_SEKUNDEN_)."', title='".mxAddSlashesForSQL(strip_tags($row['subject']))."' "; sql_query($sqlq2); }
} ##################################################################################### 
|
|
|
|
|
Gespeichert
|
|
|
|
|
|
|
shorty
|
« Antworten #29 am: 21 Dezember 2011, 03:44:44 » |
|
Thans you  i will try it !
|
|
|
|
|
Gespeichert
|
|
|
|
|
|
|
shorty
|
« Antworten #30 am: 21 Dezember 2011, 07:04:21 » |
|
it's works perfectly, thanks very much for you works !!  so i've few ideas for this mod. i think if it's include by default search into other pragmaMx addons (with autorization) -mx-shop support -Coppermine support -Sirus Gallery Support -Contest-Mx Support Best regards
|
|
|
|
|
Gespeichert
|
|
|
|
|
|
|
shorty
|
« Antworten #31 am: 25 Februar 2012, 12:10:44 » |
|
Hello and thanks for your great work on PragmaMx I ve found a minor error in the version i have. in suche.functions.php found : $link = 'modules.php?name=Web_Links&lid='.$row['lid']; replace by $link = 'modules.php?name=Web_Links&op=view&lid='.$row['lid']; 
|
|
|
|
|
Gespeichert
|
|
|
|
|
|
|
Webfan
|
« Antworten #32 am: 25 Februar 2012, 12:30:50 » |
|
|
|
|
|
|
Gespeichert
|
|
|
|
|