. .
pragmaMx Support Forum 26 Mai 2012, 02:51:51 *
Willkommen Gast. Bitte einloggen oder registrieren.


Einloggen mit Benutzername und Passwort
News:
Brauchen Sie Hilfe? Bitte nutzen Sie unsere Suchfunktion bevor Sie Beiträge oder Fragen ins Board schreiben! Viele Fragen wurden bereits gestellt und beantwortet. Danke!
 
Übersicht Hilfe Forenregeln / Boardrules
 
Suche
Seiten: 1 2 [Alle]   Nach unten
Drucken
Autor Thema: Neues Modul: Suche  (Gelesen 6437 mal)
0 Mitglieder und 1 Gast betrachten dieses Thema.
Webfan
Spezialist
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 552


WWW
« am: 26 Oktober 2011, 17:52:47 »

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

Gespeichert

Webfan
Spezialist
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 552


WWW
« 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  Wink sondern did
« Letzte Änderung: 26 Oktober 2011, 18:20:50 von Webfan » Gespeichert

trulla
Spezialist
*****
Offline Offline

Geschlecht: Weiblich
Beiträge: 500

trulla


WWW
« Antworten #2 am: 26 Oktober 2011, 21:12:34 »

 Smiley
Zitat
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
Spezialist
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 552


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

mfg
Gespeichert

trulla
Spezialist
*****
Offline Offline

Geschlecht: Weiblich
Beiträge: 500

trulla


WWW
« Antworten #4 am: 27 Oktober 2011, 07:37:38 »

 Smiley 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
Spezialist
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 552


WWW
« Antworten #5 am: 27 Oktober 2011, 09:30:34 »

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

Zitat
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
Spezialist
*****
Offline Offline

Geschlecht: Weiblich
Beiträge: 500

trulla


WWW
« Antworten #6 am: 27 Oktober 2011, 12:05:56 »

 rougi ich krieg das nicht hin

Zitat
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
Spezialist
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 552


WWW
« 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.
Zitat
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
 bye
Gespeichert

anmShinichi
weiss mehr
****
Offline Offline

Geschlecht: Männlich
Beiträge: 367


WWW
« 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

animenmore e.V. - der Verein: Mit PMX 1.12 auf www.myanm.de
Webfan
Spezialist
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 552


WWW
« Antworten #9 am: 27 Oktober 2011, 17:59:17 »

@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


Gespeichert

trulla
Spezialist
*****
Offline Offline

Geschlecht: Weiblich
Beiträge: 500

trulla


WWW
« 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
Spezialist
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 552


WWW
« Antworten #11 am: 27 Oktober 2011, 19:57:01 »

 rougi ich schaus mir an, moment bitte...
Gespeichert

Webfan
Spezialist
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 552


WWW
« Antworten #12 am: 27 Oktober 2011, 20:05:29 »

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
Gespeichert

trulla
Spezialist
*****
Offline Offline

Geschlecht: Weiblich
Beiträge: 500

trulla


WWW
« Antworten #13 am: 27 Oktober 2011, 20:28:13 »

Danke, nun funktioniert die Suche. Smiley

 thumbup
Gespeichert

ß
Webfan
Spezialist
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 552


WWW
« 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:
Code: [Select]  
#####################################################################################
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:
Code: [Select]  
'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
Gespeichert

trulla
Spezialist
*****
Offline Offline

Geschlecht: Weiblich
Beiträge: 500

trulla


WWW
« Antworten #15 am: 29 Oktober 2011, 10:38:39 »

 Smiley Guten Morgen,

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

ß
Webfan
Spezialist
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 552


WWW
« Antworten #16 am: 29 Oktober 2011, 10:53:46 »

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

Webfan
Spezialist
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 552


WWW
« 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:

Code: [Select]  
 $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
Spezialist
*****
Offline Offline

Geschlecht: Weiblich
Beiträge: 500

trulla


WWW
« Antworten #18 am: 29 Oktober 2011, 11:25:30 »

 thumbup

So klappt es . Eins irritiert mich noch.
Zitat
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
Spezialist
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 552


WWW
« Antworten #19 am: 29 Oktober 2011, 11:44:37 »

Zitat
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:
Code: [Select]  
$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 )  rougi
NAtürlich muß zuerst eine 1 da stehen!
-----------
Zitat
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:
Code: [Select]  
/*
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 )  rougi
NAtürlich muß zuerst eine 1 da stehen!
« Letzte Änderung: 29 Oktober 2011, 11:49:16 von Webfan » Gespeichert

trulla
Spezialist
*****
Offline Offline

Geschlecht: Weiblich
Beiträge: 500

trulla


WWW
« Antworten #20 am: 29 Oktober 2011, 11:52:14 »

 Smiley
Gut, also dann funktioniert alles.
Gespeichert

ß
Webfan
Spezialist
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 552


WWW
« 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:
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  Wink

 bye
Gespeichert

Webfan
Spezialist
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 552


WWW
« Antworten #22 am: 29 November 2011, 07:08:45 »

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
Gespeichert

shorty
weiss was
***
Offline Offline

Beiträge: 103


WWW
« Antworten #23 am: 14 Dezember 2011, 03:15:43 »

 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
Code: [Select]  
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
Spezialist
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 552


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

 bye
Gespeichert

shorty
weiss was
***
Offline Offline

Beiträge: 103


WWW
« Antworten #25 am: 15 Dezember 2011, 03:21:55 »

 Ok, thanks, it's working for me now  thumbup
But it's not work with smf forums  gruebel
i've tried to modify this
Code: [Select]  
'SMF' => array( 0,1, 'funcSucheMod_SMF' ),
to
Code: [Select]  
'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 :

Code: [Select]  
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
Spezialist
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 552


WWW
« 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
weiss was
***
Offline Offline

Beiträge: 103


WWW
« Antworten #27 am: 15 Dezember 2011, 06:12:14 »

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
Gespeichert

Webfan
Spezialist
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 552


WWW
« 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.html
changes:
- did you mean disabled by default
- rezepte modul search
- smf modul search (I did not tested it so far, unsure about $link?)

Code: [Select]  
#####################################################################################
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
Gespeichert

shorty
weiss was
***
Offline Offline

Beiträge: 103


WWW
« Antworten #29 am: 21 Dezember 2011, 03:44:44 »

 Thans you thumbup i will try it !
Gespeichert

shorty
weiss was
***
Offline Offline

Beiträge: 103


WWW
« Antworten #30 am: 21 Dezember 2011, 07:04:21 »

 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
Gespeichert

shorty
weiss was
***
Offline Offline

Beiträge: 103


WWW
« 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 :

Code: [Select]  
         $link = 'modules.php?name=Web_Links&amp;lid='.$row['lid'];     

replace by

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

 smile
Gespeichert

Webfan
Spezialist
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 552


WWW
« Antworten #32 am: 25 Februar 2012, 12:30:50 »

Thank you shorty  thumbup

New Version:  http://www.webfan.de/Downloads-lid-Suche-Suchemodul-fuer-das-PragmaMx-58.html
Gespeichert

Seiten: 1 2 [Alle]   Nach oben
Drucken
 
Gehe zu:  

Powered by SMF 1.1.16 | SMF © 2011, Simple Machines
design by hENNE, layout based on YAML