Seite 1 von 1

Suche: Keywords neu anlegen

Verfasst: Di 10. Jun 2014, 10:16
von kemweb
Ich hatte bei mir einen Bug in der Suche (Umlaute) behoben. Jedoch werden die Keywords immer nur neu erstellt, wenn man eine Seite speichert. Da wir jedoch viele Seiten haben, kommt das manuelle neu speichern aller Seiten nicht in Frage.

Wie erstelle ich con_keywords für alle Seiten neu?

Update zum oben erwähnten Bugfix:

in contenido/classes/class.search.php Zeile 500 ist die Funktion:

Code: Alles auswählen

public function removeSpecialChars($key) {
//...
        $sEncoding = getEncodingByLanguage($this->db, $this->lang);

        if (strtolower($sEncoding) != 'iso-8859-2') {
            // KEMWEB UTF-8 Bugfix
            // $key = conHtmlentities($key, NULL, $sEncoding);
            $key = htmlentities($key, NULL, 'ISO-8859-1');
        } else {
            $key = htmlentities_iso88592($key);
        }
//...

Re: Suche: Keywords neu anlegen

Verfasst: Mi 11. Jun 2014, 09:43
von mischa.holz
Ich befürchte, dass es im Moment keine Möglichkeit gibt die Generierung irgendwie manuell anzustoßen :/

Eventuell könntest du ein Modul schreiben, dass die Generierung für alle Artikel übernimmt (wobei du aber aufpassen musst, innerhalb der erlaubten Ausführungszeit von PHP zu bleiben...)

Schau dir mal die Funktion conMakeArticleIndex an. Mit den cApi Klassen bist du in der Lage die id's für alle Sprachen und Artikel herauszubekommen.

Ansonsten sollte es dafür vielleicht wirklich einen Knopf im Backend geben...

Re: Suche: Keywords neu anlegen

Verfasst: Do 12. Jun 2014, 10:31
von kemweb
Ich hab mir aus der Tabelle con_art_lang die Werte für idartlang und idart rausgesucht, aber der Aufruf von conMakeArticleIndex scheint nichts zu bewirken:

Code: Alles auswählen

    if (!defined('CON_FRAMEWORK')) {
        define('CON_FRAMEWORK', true);
    }

    $articles = ConArtLang::where('idartlang', 488)->first();
    var_dump($articles->idartlang);
    var_dump($articles->idart);
    include_once ('/var/www/web1/html/contenido/includes/startup.php');
    include_once ('/var/www/web1/html/contenido/includes/functions.con.php');
    conMakeArticleIndex($articles->idartlang, $articles->idart);
Update: ok, er ist schon bei startup.php hängen geblieben. Wenn ich dort cInclude('includes', 'functions.i18n.php'); raus nehme kommt er durch, aber conMakeArticleIndex erstellt immer noch keine Keywords.

Re: Suche: Keywords neu anlegen

Verfasst: Di 17. Jun 2014, 09:18
von kemweb
Ok, jetzt geht es. conMakeArticleIndex war der absolute Holzweg...
Nachdem ich wieder zurück zu cSearchIndex gewechselt bin konnte ich so Keywords generieren:

Code: Alles auswählen

    if (!defined('CON_FRAMEWORK')) {
        define('CON_FRAMEWORK', true);
    }

    include_once ('/var/www/web1/html/contenido/includes/startup.php');
    include_once ('/var/www/web1/html/contenido/includes/functions.con.php');

    $db = cRegistry::getDb();
    $lang = 1;

    foreach ($articles as $article)
    {
        $content = conGetContentFromArticle($article->idartlang);
        $cms_options = array(
            'img',
            'link',
            'linktarget',
            'swf'
        );
        $search = new cSearchIndex($db);
        $search->start($article->idart, $content, 'auto', $cms_options);
    }
Sehr intuitiv, besonders die globale Variable $lang...

Update: Gerade noch einen Bug gefunden. Die Suche cSearchIndex hat irgendwelche Variablen die es benutzt ohne zu initialisieren, darum muss man das Objekt immer neu erzeugen.

Re: Suche: Keywords neu anlegen

Verfasst: Mi 18. Nov 2015, 14:42
von dermicha
Hallo,

ich hatte auch gerade das Problem, dass ein System, das nach der Erfassung des großteils der Inhalte auf 4.9.7 upgedatet worden war, nachträglich eine Suchfunktion bekommen hat. Es wurden aber nur sehr wenige Artikel (seit dem Update?) bei der Suche gefunden. Offensichtlich also das gleiche Problem...

Ist aber nicht folgende Funktion genau dafür gedacht?:
conGenerateKeywords($client, $language);

http://api.contenido.org/con490/source- ... ml#139-171

Die kann man sogar einfach in einem Modul benutzen, hat allerdings eine recht lange Laufzeit. Jetzt werden aber alle Artikel gefunden...

Wäre das nicht eine gute Funktion im Bereich "System/Bereinigung"?

Grüße
Michael

Re: Suche: Keywords neu anlegen

Verfasst: Do 19. Nov 2015, 10:23
von rethus
dermicha hat geschrieben: Wäre das nicht eine gute Funktion im Bereich "System/Bereinigung"?
:idea: +1