Neues Modul: Suche

Begonnen von Webfan, 26 Oktober 2011, 17:52:47

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

Webfan

Hallo  :bye:
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ß  :drinks:

Achja, fast vergessen: Download: http://www.webfan.de/Downloads-lid-Suche-Suchemodul-fuer-das-PragmaMx-58.html


Webfan

#1
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

trulla

 :)
ZitatMySQL meldet:

#1071 - Specified key was too long; max key length is 1000 bytes

Eine Datenbank wird dennoch angelegt, aber die Suche funktioniert nicht

Webfan

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  :red:, kommt drauf an wie lang die urls sein dürfen und der Suchquery...!?

mfg

trulla

 :) 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?

Webfan

Zitat
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

Zitatum 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

trulla

 :red: ich krieg das nicht hin

ZitatMySQL 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

Webfan

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.
Zitatthe 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
:bye:

anmShinichi

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
MonsterWorks - www.monsterworks.de

Webfan

@anmShinichi: Danke für das Lob  :smile:

@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



trulla

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

Webfan

 :red: ich schaus mir an, moment bitte...

Webfan

Ok, sorry, mit latin ging es nicht. Hab nun Kollation wieder auf utf8 umgestellt nun  scheint es zu gehen:
http://www.pewro.de/modules.php?q=test&BTN_search=Suchen...&name=Suche
:bye:

trulla

Danke, nun funktioniert die Suche. :)

:thumbup:

Webfan

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&amp;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).

:bye:

trulla

 :) Guten Morgen,

leider klappt das nicht. Das Rezeptmodul wird so nicht durchsucht.

Webfan

Mh  :gruebel:  Hast Du mal geschaut, ob Du über den Debug Mode Meldungen erhälst?
mfg

Webfan

...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

trulla

 :thumbup:

So klappt es . Eins irritiert mich noch.
ZitatRanking: 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?

Webfan

#19
ZitatRanking: 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 )  :red:
NAtürlich muß zuerst eine 1 da stehen!
-----------
ZitatFunktioniern 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.

:bye:

EDIT: Ich hab den Unteschied jetz gesehen (oben )  :red:
NAtürlich muß zuerst eine 1 da stehen!

trulla

 :)
Gut, also dann funktioniert alles.

Webfan

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:
Zitat"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  :bye:

...Bitte nicht gedrängelt fühlen, ich bin halt ein neugieriger Mensch  ;)

:bye:

Webfan

Moin,
hallo, hallo  :bye:

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...?

:bye:

shorty

 hello  :smile:

Thanks for your job  :thumbup:
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

Webfan

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.

:bye:

shorty

#25
 Ok, thanks, it's working for me now  :thumbup:
But it's not work with smf forums  :gruebel:
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

Webfan

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.

shorty

ok i understand  :smile:,
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.html
but 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

Webfan

Version 1.0.2.0: http://www.webfan.de/Downloads-lid-Suche-Suchemodul-fuer-das-PragmaMx-58.html
changes:
- 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&amp;topic='.$row['ID_TOPIC'].'&amp;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);
     }


}
#####################################################################################


:bye:


shorty

 it's works perfectly, thanks very much for you works !!   :drinks:

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

shorty

 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&amp;lid='.$row['lid'];     

replace by

          $link = 'modules.php?name=Web_Links&op=view&lid='.$row['lid'];

:smile: