[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Addon RexSearch (Fulltext-Search-Addon) - Seite 27 - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Popkultur
Beiträge: 82
Registriert: 1. Apr 2014, 19:55

Re: Addon RexSearch (Fulltext-Search-Addon)

24. Mär 2015, 11:01

Ich habe eine Frage zu Rexsearch. Kann ich zwei getrennte Bereich definieren, mit zwei getrennten Ergebnislisten? Ich habe einen Loginbereich auf der Website, der soll nach Möglichkeit separat durchsucht werden ODER in den Suchergebnissen nur auftauchen, wenn man eingeloggt ist. Realisiert ist er mit tvsfeuser. Vermutlich müsste ich das Rexsearch Addon modifizieren, damit das geht.

Benutzeravatar
runstop64
Beiträge: 369
Registriert: 23. Okt 2012, 21:34
Wohnort: Hamburg
Kontaktdaten: Website Facebook Twitter

Re: Addon RexSearch (Fulltext-Search-Addon)

24. Mär 2015, 11:40

@Popkultur

Ich habe so etwas ähnliches gerade mit dem Community Addon erstellt. Dafür habe ich lediglich das Ausgabe-Modul so anpassen müssen, dass vor der Ausgabe geprüft und gefiltert wird, ob die Inhalte im geschlossenen oder offenen Bereich liegen und der User sie sehen darf oder nicht.
Viele Grüße,
Daniel


studio-ahoi.de | Referenzen | Friends Of REDAXO

Popkultur
Beiträge: 82
Registriert: 1. Apr 2014, 19:55

Re: Addon RexSearch (Fulltext-Search-Addon)

26. Mär 2015, 11:34

Und wie schauts aus mit Inhalten, die im Medienpool liegen und dort in einer Kategorie "Geschlossener Bereich"? Kann man das irgendwie von der Suche ausklammern?

Und bezüglich der nicht indexierbaren PDFs, hat mal jemand andere Klassen ausprobiert?

Benutzeravatar
runstop64
Beiträge: 369
Registriert: 23. Okt 2012, 21:34
Wohnort: Hamburg
Kontaktdaten: Website Facebook Twitter

Re: Addon RexSearch (Fulltext-Search-Addon)

26. Mär 2015, 18:35

Und wie schauts aus mit Inhalten, die im Medienpool liegen und dort in einer Kategorie "Geschlossener Bereich"? Kann man das irgendwie von der Suche ausklammern?
Ich weiß nicht genau, wie das TVS Addon funktioniert, aber RexSearch leifert ja sehr umfangreiche Infos im Rückgabe-Array. Da sollte sich auch eine Möglichkeit ergeben, die mit OOMedia die Kategorie abzufragen und die Daten auszusieben: http://blumbeet.com/files/cheatsheet_redaxo_42.pdf. Erstmal sind sie wohl leider mit drin.
Viele Grüße,
Daniel


studio-ahoi.de | Referenzen | Friends Of REDAXO

Popkultur
Beiträge: 82
Registriert: 1. Apr 2014, 19:55

Re: Addon RexSearch (Fulltext-Search-Addon)

10. Apr 2015, 09:54

Danke! Und noch eine Frage: Zur Zeit benutzt mein rexsearch die php Klasse pdf2txt zum PDF auslesen. Allerdings funktioniert das nicht zuverlässig, er lässt ca. 20% der PDFs aus. Was könnte man da tun? pdftotext (poppler utils) auf dem Server installieren?

Oder hat jemand schon erfolgreich eine andere Library integriert?

Popkultur
Beiträge: 82
Registriert: 1. Apr 2014, 19:55

Re: Addon RexSearch (Fulltext-Search-Addon)

11. Mai 2015, 11:48

Kann ich irgendwie einstellen (lassen im Frontend), wie Artikel aufgelistet werden sollen (Nach Relevanz, Datum etc.)?

Benutzeravatar
claudihey
Beiträge: 117
Registriert: 22. Nov 2008, 16:06
Wohnort: Bingen am Rhein
Kontaktdaten: Website

Re: Addon RexSearch (Fulltext-Search-Addon)

19. Mai 2015, 16:29

Hallo zusammen,

ich habe RexSearch installiert und bekomme bei der Ergebnis-Ausgabe immer folgende Fehlermeldung:

Code: Alles auswählen

Fatal error: Call to a member function getArticles() on null in xxx/redaxo/include/classes/class.rex_article_base.inc.php(395) : eval()'d code(84) : eval()'d code on line 11
Redaxo-Version: 4.6.1

Habt Ihr eine Ahnung, wo der Fehler liegen könnte?

Danke im Voraus,
Claudia


Das Ausgabe-Modul sieht wie folgt aus:

Code: Alles auswählen

<?php
  if(!empty($_REQUEST['rexsearch']))
  {
    $rexsearch = new RexSearch();
    $result = $rexsearch->search($_REQUEST['rexsearch']);

    if($result['count'] > 0)
    {
      echo '<ul class="searchresults">';
      foreach($result['hits'] as $hit)
      {
        if($hit['type'] == 'article')
        {
          $article = OOArticle::getArticleById($hit['fid']);
          echo '<li>
    <h4><a href="'.($url = htmlspecialchars($article->getUrl())).'">'.$article->getName().'</a></h4>
      <p class="highlightedtext">'.$hit['highlightedtext'].'</p>
      <p class="url">'.$REX['SERVER'].rex_getUrl($hit['fid'], $hit['clang']).'</p></li>';
        }
      }
      echo '</ul>';
    }
  }
  ?>
Inhalt der class.rex_article_base.inc.php:

Code: Alles auswählen

<?php

/**
 * Klasse regelt den Zugriff auf Artikelinhalte.
 * Alle benötigten Daten werden von der DB bezogen.
 *
 * @package redaxo4
 * @version svn:$Id$
 */

class rex_article_base
{
    var $category_id;
    var $article_id;
    var $slice_id;
    var $mode;
    var $function;

    var $template_id;
    var $template_attributes;

    var $ctype;
    var $clang;
    var $getSlice;

    var $eval;

    var $article_revision;
    var $slice_revision;

    var $warning;
    var $info;
    var $debug;

    /*private*/ function rex_article_base($article_id = null, $clang = null)
    {
        global $REX;

        $this->article_id = 0;
        $this->template_id = 0;
        $this->ctype = -1; // zeigt alles an
        $this->slice_id = 0;

        $this->mode = 'view';
        $this->eval = false;

        $this->article_revision = 0;
        $this->slice_revision = 0;

        $this->debug = false;

        $this->ARTICLE = rex_sql::factory();
        if ($this->debug) {
            $this->ARTICLE->debugsql = 1;
        }

        if ($clang !== null) {
            $this->setCLang($clang);
        } else {
            $this->setClang($REX['CUR_CLANG']);
        }

        // ----- EXTENSION POINT
        rex_register_extension_point('ART_INIT', '',
            array (
                'article' => &$this,
                'article_id' => $article_id,
                'clang' => $this->clang
            )
        );

        if ($article_id !== null) {
            $this->setArticleId($article_id);
        }
    }

    /*protected*/ function setSliceRevision($sr)
    {
        $this->slice_revision = (int) $sr;
    }

    // ----- Slice Id setzen für Editiermodus
    /*public*/ function setSliceId($value)
    {
        $this->slice_id = $value;
    }

    /*public*/ function setClang($value)
    {
        global $REX;
        if (!isset($REX['CLANG'][$value]) || $REX['CLANG'][$value] == '') {
            $value = $REX['CUR_CLANG'];
        }
        $this->clang = $value;
    }

    /*public*/ function getArticleId()
    {
        return $this->article_id;
    }

    /*public*/ function getClang()
    {
        return $this->clang;
    }

    /*public*/ function setArticleId($article_id)
    {
        global $REX;

        $article_id = (int) $article_id;
        $this->article_id = $article_id;

        // ---------- select article
        $qry = 'SELECT * FROM ' . $REX['TABLE_PREFIX'] . 'article WHERE ' . $REX['TABLE_PREFIX'] . "article.id='$article_id' AND clang='" . $this->clang . "'";
        $this->ARTICLE->setQuery($qry);

        if ($this->ARTICLE->getRows() == 1) {
            $this->template_id = $this->getValue('template_id');
            $this->category_id = $this->getValue('category_id');
            return true;
        }

        $this->article_id = 0;
        $this->template_id = 0;
        $this->category_id = 0;
        return false;
    }

    /*public*/ function setTemplateId($template_id)
    {
        $this->template_id = $template_id;
    }

    /*public*/ function getTemplateId()
    {
        return $this->template_id;
    }

    /*public*/ function setMode($mode)
    {
        $this->mode = $mode;
    }

    /*public*/ function setFunction($function)
    {
        $this->function = $function;
    }

    /*public*/ function setEval($value)
    {
        if ($value) {
            $this->eval = true;
        } else {
            $this->eval = false;
        }
    }

    /*protected*/ function correctValue($value)
    {
        if ($value == 'category_id') {
            if ($this->getValue('startpage') != 1) {
                $value = 're_id';
            } else {
                $value = 'id';
            }
        }
        // über SQL muss article_id -> id heissen
        elseif ($value == 'article_id') {
            $value = 'id';
        }

        return $value;
    }

    /*protected*/ function _getValue($value)
    {
        global $REX;
        $value = $this->correctValue($value);

        return $this->ARTICLE->getValue($value);
    }

    /*protected*/ function getValue($value)
    {
        // damit alte rex_article felder wie teaser, online_from etc
        // noch funktionieren
        // gleicher BC code nochmals in OOREDAXO::getValue
        foreach (array('', 'art_', 'cat_') as $prefix) {
            $val = $prefix . $value;
            if ($this->hasValue($val)) {
                return $this->_getValue($val);
            }
        }
        return '[' . $value . ' not found]';
    }

    /*public*/ function hasValue($value)
    {
        return $this->ARTICLE->hasValue($this->correctValue($value));
    }

    /*protected*/ function outputSlice($artDataSql, $module_id, $I_ID,
        $RE_CONTS, $RE_CONTS_CTYPE, $RE_MODUL_IN, $RE_MODUL_OUT,
        $RE_MODUL_ID, $RE_MODUL_NAME, $RE_C)
    {
        if ($this->getSlice) {
            foreach ($RE_CONTS as $k => $v) {
                $I_ID = $k;
            }
        }

        return $this->replaceVars($artDataSql, $RE_MODUL_OUT[$I_ID]);
    }


    /*public*/ function getArticle($curctype = -1)
    {
        global $REX, $I18N;

        $this->ctype = $curctype;

        if ($this->article_id == 0) {
            return $I18N->msg('no_article_available');
        }

        $sliceLimit = '';
        if ($this->getSlice) {
            $sliceLimit = ' AND ' . $REX['TABLE_PREFIX'] . "article_slice.id = '" . $this->getSlice . "' ";
        }

        // ----- start: article caching
        ob_start();
        ob_implicit_flush(0);
        $module_id = rex_request('module_id', 'int');

        // ---------- alle teile/slices eines artikels auswaehlen
        $sql = 'SELECT ' . $REX['TABLE_PREFIX'] . 'module.id, ' . $REX['TABLE_PREFIX'] . 'module.name, ' . $REX['TABLE_PREFIX'] . 'module.ausgabe, ' . $REX['TABLE_PREFIX'] . 'module.eingabe, ' . $REX['TABLE_PREFIX'] . 'article_slice.*, ' . $REX['TABLE_PREFIX'] . 'article.re_id
                        FROM
                            ' . $REX['TABLE_PREFIX'] . 'article_slice
                        LEFT JOIN ' . $REX['TABLE_PREFIX'] . 'module ON ' . $REX['TABLE_PREFIX'] . 'article_slice.modultyp_id=' . $REX['TABLE_PREFIX'] . 'module.id
                        LEFT JOIN ' . $REX['TABLE_PREFIX'] . 'article ON ' . $REX['TABLE_PREFIX'] . 'article_slice.article_id=' . $REX['TABLE_PREFIX'] . 'article.id
                        WHERE
                            ' . $REX['TABLE_PREFIX'] . "article_slice.article_id='" . $this->article_id . "' AND
                            " . $REX['TABLE_PREFIX'] . "article_slice.clang='" . $this->clang . "' AND
                            " . $REX['TABLE_PREFIX'] . "article.clang='" . $this->clang . "' AND
                            " . $REX['TABLE_PREFIX'] . "article_slice.revision='" . $this->slice_revision . "'
                            " . $sliceLimit . '
                            ORDER BY ' . $REX['TABLE_PREFIX'] . 'article_slice.re_article_slice_id';

        $artDataSql = rex_sql::factory();
        if ($this->debug) {
            $artDataSql->debugsql = 1;
        }
        $artDataSql->setQuery($sql);
        $rows = $artDataSql->getRows();

        $RE_CONTS = array();
        $RE_CONTS_CTYPE = array();
        $RE_MODUL_OUT = array();
        $RE_MODUL_IN = array();
        $RE_MODUL_ID = array();
        $RE_MODUL_NAME = array();
        $RE_C = array();

        // ---------- SLICE IDS/MODUL SETZEN - speichern der daten
        for ($i = 0; $i < $rows; $i++) {
            $RE_SLICE_ID                  = $artDataSql->getValue($REX['TABLE_PREFIX'] . 'article_slice.re_article_slice_id');

            $RE_CONTS[$RE_SLICE_ID]       = $artDataSql->getValue($REX['TABLE_PREFIX'] . 'article_slice.id');
            $RE_CONTS_CTYPE[$RE_SLICE_ID] = $artDataSql->getValue($REX['TABLE_PREFIX'] . 'article_slice.ctype');
            $RE_MODUL_IN[$RE_SLICE_ID]    = $artDataSql->getValue($REX['TABLE_PREFIX'] . 'module.eingabe');
            $RE_MODUL_OUT[$RE_SLICE_ID]   = $artDataSql->getValue($REX['TABLE_PREFIX'] . 'module.ausgabe');
            $RE_MODUL_ID[$RE_SLICE_ID]    = $artDataSql->getValue($REX['TABLE_PREFIX'] . 'module.id');
            $RE_MODUL_NAME[$RE_SLICE_ID]  = $artDataSql->getValue($REX['TABLE_PREFIX'] . 'module.name');
            $RE_C[$RE_SLICE_ID]           = $i;
            $artDataSql->next();
        }

        // pre hook
        $this->preArticle();

        // ---------- SLICE IDS SORTIEREN UND AUSGEBEN
        $I_ID = 0;
        $PRE_ID = 0;
        $LCTSL_ID = 0;
        $artDataSql->reset();
        $articleContent = '';

        for ($i = 0; $i < $rows; $i++) {
            // ----- ctype unterscheidung
            if ($this->mode != 'edit' && $i == 0) {
                $articleContent = "<?php if (\$this->ctype == '" . $RE_CONTS_CTYPE[$I_ID] . "' || (\$this->ctype == '-1')) { ?>";
            }

            // ------------- EINZELNER SLICE - AUSGABE
            $artDataSql->counter = $RE_C[$I_ID];

            $slice_content = $this->outputSlice(
                $artDataSql,
                $module_id,
                $I_ID,
                $RE_CONTS,
                $RE_CONTS_CTYPE,
                $RE_MODUL_IN,
                $RE_MODUL_OUT,
                $RE_MODUL_ID,
                $RE_MODUL_NAME,
                $RE_C
            );

            // --------------- ENDE EINZELNER SLICE

            // --------------- EP: SLICE_SHOW
            $slice_content = rex_register_extension_point(
                'SLICE_SHOW',
                $slice_content,
                array(
                    'article_id' => $this->article_id,
                    'clang' => $this->clang,
                    'ctype' => $RE_CONTS_CTYPE[$I_ID],
                    'module_id' => $RE_MODUL_ID[$I_ID],
                    'slice_id' => $RE_CONTS[$I_ID],
                    'function' => $this->function,
                    'function_slice_id' => $this->slice_id
                )
            );

            // ---------- slice in ausgabe speichern wenn ctype richtig
            if ($this->ctype == -1 or $this->ctype == $RE_CONTS_CTYPE[$I_ID]) {
                $articleContent .= $slice_content;

                // last content type slice id
                $LCTSL_ID = $RE_CONTS[$I_ID];
            }

            // ----- zwischenstand: ctype .. wenn ctype neu dann if
            if ($this->mode != 'edit' && isset($RE_CONTS_CTYPE[$RE_CONTS[$I_ID]]) && $RE_CONTS_CTYPE[$I_ID] != $RE_CONTS_CTYPE[$RE_CONTS[$I_ID]] && $RE_CONTS_CTYPE[$RE_CONTS[$I_ID]] != '') {
                $articleContent .= "<?php } if(\$this->ctype == '" . $RE_CONTS_CTYPE[$RE_CONTS[$I_ID]] . "' || \$this->ctype == '-1'){ ?>";
            }

            // zum nachsten slice
            $I_ID = $RE_CONTS[$I_ID];
            $PRE_ID = $I_ID;

        }

        // ----- end: ctype unterscheidung
        if ($this->mode != 'edit' && $i > 0) {
            $articleContent .= '<?php } ?>';
        }


        // ----- post hook
        $articleContent = $this->postArticle($articleContent, $LCTSL_ID, $module_id);

        // -------------------------- schreibe content
        if ($this->eval === false) {
            echo $articleContent;
        } else {
            eval('?>' . $articleContent);
        }

        // ----- end: article caching
        $CONTENT = ob_get_contents();
        ob_end_clean();

        return $CONTENT;
    }

    /*protected*/ function preArticle()
    {
        // nichts tun
    }

    /*protected*/ function postArticle($articleContent, $LCTSL_ID, $module_id)
    {
        // nichts tun
        return $articleContent;
    }

    // ----- Template inklusive Artikel zurückgeben
    /*public*/ function getArticleTemplate()
    {
        // global $REX hier wichtig, damit in den Artikeln die Variable vorhanden ist!
        global $REX;

        if ($this->template_id != 0 && $this->article_id != 0) {
            ob_start();
            ob_implicit_flush(0);

            $TEMPLATE = new rex_template();
            $TEMPLATE->setId($this->template_id);
            $tplContent = $this->replaceCommonVars($TEMPLATE->getTemplate());
            eval('?>' . $tplContent);

            $CONTENT = ob_get_contents();
            ob_end_clean();

            $CONTENT = $this->replaceLinks($CONTENT);
        } else {
            $CONTENT = 'no template';
        }

        return $CONTENT;
    }

    // ----- Modulvariablen werden ersetzt
    /*protected*/ function replaceVars(&$sql, $content)
    {
        $content = $this->replaceObjectVars($sql, $content);
        $content = $this->replaceCommonVars($content);
        return $content;
    }

    // ----- REX_VAR Ersetzungen
    /*protected*/ function replaceObjectVars(&$sql, $content)
    {
        global $REX;

        $tmp = '';
        $sliceId = $sql->getValue($REX['TABLE_PREFIX'] . 'article_slice.id');
        $flushValues = false;

        foreach ($REX['VARIABLES'] as $var) {
            if ($this->mode == 'edit') {
                if (($this->function == 'add' && $sliceId == '0') ||
                        ($this->function == 'edit' && $sliceId == $this->slice_id)
                ) {
                    if (isset($REX['ACTION']['SAVE']) && $REX['ACTION']['SAVE'] === false) {
                        // Wenn der aktuelle Slice nicht gespeichert werden soll
                        // (via Action wurde das Nicht-Speichern-Flag gesetzt)
                        // Dann die Werte manuell aus dem Post übernehmen
                        // und anschließend die Werte wieder zurücksetzen,
                        // damit die nächsten Slices wieder die Werte aus der DB verwenden
                        $var->setACValues($sql, $REX['ACTION']);
                        $tmp = $var->getBEInput($sql, $content);
                        $flushValues = true;
                    } else {
                        // Slice normal parsen
                        $tmp = $var->getBEInput($sql, $content);
                        // Werte wieder zuruecksetzen, damit die naechsten Slices wieder
                        // die Werte aus der DB verwenden
                        $flushValues = true;
                    }
                } else {
                    $tmp = $var->getBEOutput($sql, $content);
                }
            } else {
                $tmp = $var->getFEOutput($sql, $content);
            }

            // Rückgabewert nur auswerten wenn auch einer vorhanden ist
            // damit $content nicht verfälscht wird
            // null ist default Rückgabewert, falls kein RETURN in einer Funktion ist
            if ($tmp !== null) {
                $content = $tmp;
            }
        }

        if ($flushValues) {
            $sql->flushValues();
        }

        return $content;
    }

    // ---- Artikelweite globale variablen werden ersetzt
    /*public*/ function replaceCommonVars($content, $template_id = null)
    {
        global $REX;

        static $user_id = null;
        static $user_login = null;

        // UserId gibts nur im Backend
        if ($user_id === null) {
            if (isset($REX['USER'])) {
                $user_id = $REX['USER']->getValue('user_id');
                $user_login = $REX['USER']->getValue('login');
            } else {
                $user_id = '';
                $user_login = '';
            }
        }

        if (!$template_id) {
            $template_id = $this->getTemplateId();
        }

        static $search = array(
            'REX_ARTICLE_ID',
            'REX_CATEGORY_ID',
            'REX_CLANG_ID',
            'REX_TEMPLATE_ID',
            'REX_USER_ID',
            'REX_USER_LOGIN'
        );

        $replace = array(
            $this->article_id,
            $this->category_id,
            $this->clang,
            $template_id,
            $user_id,
            $user_login
        );

        return str_replace($search, $replace, $content);
    }

    /*protected*/ function replaceLinks($content)
    {
        return preg_replace_callback(
            '@redaxo://(\d+)(?:-(\d+))?/?@i',
            create_function(
                '$matches',
                'return rex_getUrl($matches[1], isset($matches[2]) ? $matches[2] : ' . (integer) $this->clang . ');'
            ),
            $content
        );
    }
}

Popkultur
Beiträge: 82
Registriert: 1. Apr 2014, 19:55

Re: Addon RexSearch (Fulltext-Search-Addon)

20. Mai 2015, 09:40

Im Zweifelsfall auch mal Redaxo-Cache löschen und Neu indexieren lassen.

Popkultur
Beiträge: 82
Registriert: 1. Apr 2014, 19:55

Re: Addon RexSearch (Fulltext-Search-Addon)

2. Jun 2015, 14:59

Hallo!

Hat jemand auch das Problem, dass Dateinamen mit Pluszeichen nicht indexiert werden (PDF)? WIe kann ich das umgehen, ohne die Datei umzubenennen?

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

Re: Addon RexSearch (Fulltext-Search-Addon)

3. Jun 2015, 14:20

Hej,

das Plus kann gar nicht vorkommen, wenn die Datei über den Medienpool hochgeladen wurde.

Es werden alle Sonderzeichen außer "_", "-" und "." umgewandelt.

vg Thomas

Popkultur
Beiträge: 82
Registriert: 1. Apr 2014, 19:55

Re: Addon RexSearch (Fulltext-Search-Addon)

3. Jun 2015, 16:19

Tja, wir haben ein multiuploadtool, was da wohl ein wenig geschlampt hat. Das Pluszeichen ist meines Wissens auch ein legitimes Dateisymbol.

Kriegt man es denn hin, das rexsearch das frisst?

Außerdem habe ich das Problem, dass RexSearch nur dann (schrittweise) indexiert, wenn ich in der /redaxo/index.php ini_set('display_errors', 1); stehen hab. :shock: Wieso das?

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

Re: Addon RexSearch (Fulltext-Search-Addon)

3. Jun 2015, 16:56

Hej,

das indexieren müsstest du manuell anstoßen oder im WIki nachlesen. Da steht wie du das Indexieren selbst auslösen kannst

Wegen deinem + Zeichen. Weiß ich leider nicht. Musst du selber nachsehen.


vg Thomas

Popkultur
Beiträge: 82
Registriert: 1. Apr 2014, 19:55

Re: Addon RexSearch (Fulltext-Search-Addon)

5. Jun 2015, 08:56

Habe jetzt das +-Zeichen mit str_replace in der class.rexsearch.inc.php ersetzt, jetzt gehts. Allerdings will er nach wie vor nicht (auch nicht manuell und schrittweise) indexieren, erst wenn ich in der pages/ajax.inc.php das ini_set('display_errors', 1); setze, macht ers.

Und kann es sein, dass der Dateiname selbst nicht indexiert wird? Müsste aber eigentlich...

Benutzeravatar
Percy
Beiträge: 77
Registriert: 26. Aug 2009, 14:20
Kontaktdaten: ICQ Website

Re: Addon RexSearch (Fulltext-Search-Addon)

10. Jun 2015, 15:57

Hallo liebe Leute,

habe die RexSearch neu installiert und dne Suchindex erstellt. Komischer weise findet er etwas, aber nicht das Keyword, was ich gesucht habe. Was kann das sein?

LG Percy

Popkultur
Beiträge: 82
Registriert: 1. Apr 2014, 19:55

Re: Addon RexSearch (Fulltext-Search-Addon)

10. Jun 2015, 21:34

Geht mir grade genauso, er findet nur einen Teil der Ergebnisse. Werde jetzt mehrmals indexieren habe das Gefühl das er das jedesmal anders macht.

Benutzeravatar
Percy
Beiträge: 77
Registriert: 26. Aug 2009, 14:20
Kontaktdaten: ICQ Website

Re: Addon RexSearch (Fulltext-Search-Addon)

11. Jun 2015, 12:22

Popkultur hat geschrieben:Geht mir grade genauso, er findet nur einen Teil der Ergebnisse. Werde jetzt mehrmals indexieren habe das Gefühl das er das jedesmal anders macht.
Exakt. Bei mir auch. Ich weiß nur nicht was ich sonst noch machen könnte... :roll:

Benutzeravatar
Percy
Beiträge: 77
Registriert: 26. Aug 2009, 14:20
Kontaktdaten: ICQ Website

Re: Addon RexSearch (Fulltext-Search-Addon)

15. Jun 2015, 14:23

Hallo Liebe Leute,

Das Problem bei dier Suche besteht immernoch und ich verzweifele langsam. Gibt es da einen Lösungsansatz?

Und ich hätte da noch eine Frage. Kann man die Suche sprachgesteuert einbinden? Wenn ich zumbeispiel nach Team Suche, findet er den Begriff in allen Sprachen. Es soll aber nur in der aktuellen Sprache gesucht werden. Gibts da eine Möglichkeit?

LG Percy

Benutzeravatar
RexDude
Beiträge: 2543
Registriert: 22. Apr 2010, 11:24

Re: Addon RexSearch (Fulltext-Search-Addon)

15. Jun 2015, 15:03

Zu deiner Frage siehe die Doku ganz unten "Wie kann ich sprachabhängig suchen?"
http://www.redaxo.org/de/wiki/index.php?n=R4.Rexsearch

Benutzeravatar
Percy
Beiträge: 77
Registriert: 26. Aug 2009, 14:20
Kontaktdaten: ICQ Website

Re: Addon RexSearch (Fulltext-Search-Addon)

15. Jun 2015, 15:35

RexDude hat geschrieben:Zu deiner Frage siehe die Doku ganz unten "Wie kann ich sprachabhängig suchen?"
http://www.redaxo.org/de/wiki/index.php?n=R4.Rexsearch
Sehr gut! Kann ich da auch anstatt der "REX_CLANG_ID" auch "CUR_CLANG" nutzen?

LG Percy

### EDIT ####
Die sprachabhängikeit läuft :) Allerdings das mit den Suchbegriffen nicht :(


Benutzeravatar
Percy
Beiträge: 77
Registriert: 26. Aug 2009, 14:20
Kontaktdaten: ICQ Website

Re: Addon RexSearch (Fulltext-Search-Addon)

15. Jun 2015, 16:46

Siehe oben :)

Benutzeravatar
Percy
Beiträge: 77
Registriert: 26. Aug 2009, 14:20
Kontaktdaten: ICQ Website

Re: Addon RexSearch (Fulltext-Search-Addon)

16. Jun 2015, 10:21

Sooo neues Problem. Wollte den Suchindex neu erstellen und was is da? Die zu indexierenden Seiten sind auf einmal auf 102 und dann auf 60 gefallen. In die Datenbank wird nichts geschrieben und somit auch nichts augegeben.

Habe händisch und übers Backend alles gelöscht und neu installiert. Aber alles beim alten. Was kann das sein? Gestern gings doch noch wunderbar! Ich dreh hier ab! Ahhhhhhhh! :evil: :evil: :evil:

Bild
Bild
Bild
Bild

Benutzeravatar
ralf.schlott
Beiträge: 625
Registriert: 5. Dez 2007, 21:22
Wohnort: Hamburch
Kontaktdaten: Website

Re: Addon RexSearch (Fulltext-Search-Addon)

27. Aug 2015, 12:20

Toll, dass es so ein Suchaddon gibt. Alternativlos!

Aber ich habe ein kleines Problem, wofür ich auch ein Issue aufgemacht habe:
https://github.com/xong/rexsearch/issues/18

Ich setze rexsearch hier ein:
http://www.kuschverleih.de

Sehr merkwürdig ist es, wenn ich den Artikel TI17-01 suchen möchte. TI17-02 findet er. Ersteren nicht.
Suche ich TI17- , ist der der Artikel im Suchergebnis aber dabei. Bei TI17-0 ist er aber auch nicht dabei.
Die Artikel befinden sich im Addon TvsShop. Aber das sollte ja nicht das Problem sein. Denn eine Suche nach Holz oder weiß findet er.

Wie ist das zu erklären?

Danke für das Addon aber!
- Danke für Redaxo! -
http://www.prenzlweb.de

jimhein
Beiträge: 69
Registriert: 3. Sep 2007, 11:00
Wohnort: Berlin

große Suchindextabelle - Addon RexSearch (Fulltext-Search-Ad

21. Sep 2015, 18:14

Ich freue mich auch immer wieder über dieses tolle Addon! Vielen Dank!

Gerade stehe ich allerdings vor einem Problem: Ich habe heute für einen Kunden ca. 100 PDFs auf seine Website geladen. RexSearch hat die auch prima indiziert. Sie Suche liefert jetzt nur noch manchmal Ergebnisse. Meistens gibt es ein Timeout. Nachdem ich die max_execution_time per .htaccess erhöht habe antwortet die DB nach einer Zeit nicht mehr. Die RexSearch Statistik gibt folgendes aus:

Code: Alles auswählen

Anzahl indexierter Datensätze: 133
Anzahl eindeutiger Datensätze im Suchindex (z. B. werden Artikel gruppiert): 116
...
Anzahl unterschiedlicher, im Suchindex vorhandener Begriffe: 48691
Anzahl im Cache vorgehaltener Suchen: 9
Größe des Index der Suchindex-Tabelle (587_searchindex): 47,60 MByte
Größe der Daten der Suchindex-Tabelle (587_searchindex): 17,28 MByte
Größe der Indexe aller RexSearch-Tabellen: 91,62 MByte
Größe der Daten aller RexSearch-Tabellen: 19,69 MByte
Augenscheinlich liegt das Problem in der riesengroßen Datenbank.
Hat jemand einen Tipp wie man das lösen kann?

Brauche ich ein leistungsfähigeres Hosting dafür oder gibt es irgendeinen Workaround?


UPDATE
Ich habe noch ein wenig mit den Einstellungen gespielt und unter anderem die Ähnlichkeitssuche abgestellt, das memory_limit hochgesetzt und die 'Teilwortsuche' (MySQL-Suchmodus) abgestellt.
Das ist zwar nicht optimal, aber funktioniert erst mal.



LG,
Ingo

Thomas.Skerbis
Beiträge: 1371
Registriert: 4. Aug 2006, 14:06
Wohnort: Rheinberg
Kontaktdaten: Website Twitter

Re: Addon RexSearch (Fulltext-Search-Addon)

23. Sep 2015, 17:57

Hallo und Danke für Rexsearch.

Ich habe eine Frage und einen Hinweis

1) Gibt es eine Möglichkeit dem Addon mitzuteilen, dass es die Treffer nach z.B. Create-Date oder updatedate sortiert ausgibt?

Gerade in einem Newsbereich wäre es schön die Ergebnisse chronologisch zu erhalten.

2) In aktuellen PHP-Versionen scheint die Suche bei aktivierter Ähnlichkeitssuche zu spinnen.
Es fragt immer "Meinten Sie…" obwohl Treffer für das gesuchte Wort gefunden werden mussten.
Schalte ich es ab wird das gesuchte Wort auch gefunden.

Zurück zu „Allgemeines [R4]“