[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 13 - 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/
Benutzeravatar
gege
Beiträge: 83
Registriert: 4. Aug 2006, 12:05
Wohnort: near stuttgart
Kontaktdaten: Website

22. Jul 2010, 11:25

Hi,
hab ein ganz ganz merkwürdiges Problem.
Hab XSearch in einer Seite eingebaut die 9 sprachig ist. Clang 0 ist Dt.
Dann hab ich noch einen kleiner Autocompletter für das Suchfeld eingebaut.
In der dt-Version funktioniert alle Super, nur in den Sprachsuchen, tritt ein merkwürdiges Phänomen auf.
Wenn ich jetzt in mein Suchfeld einen Produktnamen eingebe findet XSearch nichts, wenn ich jetzt z.B. den letzten Buchstaben des Produktnamens lösche, dann wird alle 1a gefunden.

Kann mir das leider nicht erklären?

Besten Dank im voraus

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

22. Jul 2010, 11:57

Hi gege!
gege hat geschrieben: Wenn ich jetzt in mein Suchfeld einen Produktnamen eingebe findet XSearch nichts, wenn ich jetzt z.B. den letzten Buchstaben des Produktnamens lösche, dann wird alle 1a gefunden.

Kann mir das leider nicht erklären?
Vielleicht gibt es noch einen kleinen Bug in XSearch.

Kannst du mir den Inhalt der Datei settings.inc.php und den PMA-Export der Tabelle rex_587_searchindex zukommen lassen, damit ich das Problem nachvollziehen kann?
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

22. Jul 2010, 15:48

Gege hat mich auf einen Bug in XSearch hingewiesen. Die neue Version 0.5.3 ist hochgeladen: XSearch 0.5.3

Der Fehler betrifft nur die, die sprachabhängige Suchen benutzen.

Achtung: Die neue Version speichert die Einstellungen nun anders. Alle Einstellungen auf der Einstellungsseite von XSearch und seinen Plugins Stats und Plaintext müssen deshalb ggf. neu vorgenommen werden. Merkt euch also eure alte Konfiguration bevor ihr diese neue Version installiert.
Eine Neuindexierung oder -installation ist dagegen nicht erforderlich. (Aber natürlich auch nicht hinderlich.)
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

Benutzeravatar
gseilheimer
Beiträge: 78
Registriert: 3. Jan 2008, 01:31

Suche in einer bestimmten Kategorie/bestimmten Artikeln

29. Jul 2010, 12:27

Hallo,

ich habe das Coding für die Kategoriensuche aus dem REX-Wiki...

Fehlermeldung:

Warning: Invalid argument supplied for foreach() in /redaxo/include/addons/xsearch/classes/class.xsearch.inc.php on line 356

Code: Alles auswählen


	if( !empty($_REQUEST['xsearch']) && "" != "REX_VALUE[1]" )
	{
		if("" != "REX_VALUE[1]")
		{
			$rex_value_1_coded = "REX_VALUE[1]";
			$rex_value_1_decode = htmlspecialchars("REX_VALUE[1]");
		}
		$xsearch = new XSearch();
		$xsearch->searchInCategories(31);
		$result = $xsearch->search($_REQUEST['xsearch']);
		
		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 "mit kat";
				}
			}
			echo '</ul>';
		}
	}
An dieser Zeile ($xsearch->searchInCategories(31);) stimmt wohl etwas nicht...

Für einen Tipp wäre ich sehr dankbar...

Gruß, Gilbert

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

29. Jul 2010, 12:50

Hallo Gilbert!

Das war ein Fehler im Wiki. Die Kategorie-IDs müssen zur Zeit per Array übergeben werden:

Code: Alles auswählen

$xsearch->searchInCategories(array(31));
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

Benutzeravatar
gseilheimer
Beiträge: 78
Registriert: 3. Jan 2008, 01:31

29. Jul 2010, 13:12

Xong hat geschrieben:Hallo Gilbert!

Das war ein Fehler im Wiki. Die Kategorie-IDs müssen zur Zeit per Array übergeben werden:

Code: Alles auswählen

$xsearch->searchInCategories(array(31));

Besten Dank - die Fehlermeldung ist weg, doch sucht er nicht in den Artikeln der angegebenen Kategorie...
CATEGORIE (31)
- SUB-CATEGORIE (45)
- - Startartikel
- - Artikel-1
- - Artikel-2
- - Artikel-3

Gibt es dafür auch schon eine Lösung?

Besten Dank im Voraus für das Feedback.

Gruß, Gilbert
...

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

29. Jul 2010, 13:31

gseilheimer hat geschrieben:Besten Dank - die Fehlermeldung ist weg, doch sucht er nicht in den Artikeln der angegebenen Kategorie...
Damit wird nur in den Artikeln gesucht, die direkte Kinder der Kategorie sind.

Im Wiki findest du aber ein Beispiel zu einem Modul, wo man auch in den Subkategorien suchen kann: http://wiki.redaxo.de/index.php?n=R4.XS ... le_result8

Auszug aus dem Quellcode:

Code: Alles auswählen

$xsearch->searchInCategories(a587_getCategories(true, true, $searchinIDs));
Edit: Funktionskopf ist so deklariert:
a587_getCategories($_ignoreoffline = true, $_onlyIDs = false, $_cats = false)

_ignoreoffline: true = ohne Offline-Kategorien, false = mit Offline-Kategorien
_onlyIDs: true = nur Cat-IDs werden zurückgegeben, false = Cats werden als Objekte zurückgegeben
_cats: Vorauswahl an Elternkategorien

Für deinen Fall wäre also folgender Code richtig:

Code: Alles auswählen

$xsearch->searchInCategories(a587_getCategories(true, true, array(31)));
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

Benutzeravatar
gseilheimer
Beiträge: 78
Registriert: 3. Jan 2008, 01:31

29. Jul 2010, 14:45

Xong hat geschrieben:
gseilheimer hat geschrieben:Besten Dank - die Fehlermeldung ist weg, doch sucht er nicht in den Artikeln der angegebenen Kategorie...
Damit wird nur in den Artikeln gesucht, die direkte Kinder der Kategorie sind.

Im Wiki findest du aber ein Beispiel zu einem Modul, wo man auch in den Subkategorien suchen kann: http://wiki.redaxo.de/index.php?n=R4.XS ... le_result8

Auszug aus dem Quellcode:

Code: Alles auswählen

$xsearch->searchInCategories(a587_getCategories(true, true, $searchinIDs));
Edit: Funktionskopf ist so deklariert:
a587_getCategories($_ignoreoffline = true, $_onlyIDs = false, $_cats = false)

_ignoreoffline: true = ohne Offline-Kategorien, false = mit Offline-Kategorien
_onlyIDs: true = nur Cat-IDs werden zurückgegeben, false = Cats werden als Objekte zurückgegeben
_cats: Vorauswahl an Elternkategorien

Für deinen Fall wäre also folgender Code richtig:

Code: Alles auswählen

$xsearch->searchInCategories(a587_getCategories(true, true, array(31)));
Habe es 1:1 eingefügt. Es gab keine Fehlermeldung aber leider auch keine Ergebnisse...

Vielleicht sollte ich das später nochmal versuchen...

Gruß, Gilbert

Benutzeravatar
Peter.Bickel
Beiträge: 1856
Registriert: 25. Jan 2005, 21:17
Wohnort: Schleswig-Holstein
Kontaktdaten: Website

29. Jul 2010, 15:05

Xong, Du warst mein Retter heute.
Hatte Xsearch mit Plaintext am Laufen und Mehrsprachigkeit zugeschaltet - Plop, nix mehr wurde gefunden.
Dann Deine aktualisierte Version hier gefunden, und alles bestens. Danke!

Benutzeravatar
alexplus
Beiträge: 212
Registriert: 13. Feb 2007, 15:03
Wohnort: Heilbronn
Kontaktdaten: Website

16. Aug 2010, 12:57

alexplus hat geschrieben:
Hab jetzt das richtige Modul benutzt und die PDF-Suche deaktiviert. Läuft. Morgen werde ich versuchen die PDF-Suche aus dem anderen Suchmodul zu integrieren.
Ist doch nicht der Tag darauf geworden, sondern erst heute.

Ich meine, ich hätte jetzt alle relevanten Stellen der DB-Suche in den Code der PDF-Suche an richtiger Stelle eingefügt, doch jetzt gibt die Suche mir keine PDF-Dateien mehr aus:

Code: Alles auswählen

<?php

  define('SHOWMAX',10);

  if(!empty($_REQUEST['xsearch']))
  {
    $xsearch = new XSearch();
    $xsearch->setLimit(array($start = isset($_GET['start'])?intval($_GET['start']):0, SHOWMAX));
    $xsearch->doSearchArticles(true);
    $xsearch->searchInDbColumn($REX['TABLE_PREFIX'].'article', 'name');
    $xsearch->searchInDbColumn($REX['TABLE_PREFIX'].'article', 'art_description');
    $xsearch->searchInDbColumn($REX['TABLE_PREFIX'].'article', 'art_keywords');

    $result = $xsearch->search($_REQUEST['xsearch']);
    if(count($result['simwords']) > 0)
    {
      $newsearchString = $result['simwordsnewsearch'];
      $result = $xsearch->search($newsearchString);
      if($result['count'] > 0)
        echo '<p>Meinten Sie <strong>'.$newsearchString.'</strong>?</p>';
    }

    if($result['count'] > 0)
    {
      echo '<ul class="searchresults">';
      foreach($result['hits'] as $hit)
      {

        $article = OOArticle::getArticleById($hit['fid']);

        if($hit['type'] == 'db_column')
          $text = $hit['article_teaser'];
        else
          $text = $hit['highlightedtext'];

        if($hit['type'] == 'file' AND $hit['fileext'] == 'pdf')
        {
          // PDF-Datei
          $filename = explode('/', $hit['filename']);
          $pdf = OOMedia::getMediaByFileName($filename[count($filename)-1]);

          echo '    <li class="pdf">
      <h4><a href="'.htmlspecialchars($pdf->getFullPath()).'">'.$pdf->getOrgFileName().'</a></h4>
      <p class="highlightedtext">'.$text.'</p>
      <p class="url">'.$REX['SERVER'].'files/'.$pdf->getOrgFileName().'</p>
    </li>';
        }
        else
        {
          // Artikel oder DB-Spalte aus der Artikel-Tabelle
          $article = OOArticle::getArticleById($hit['fid']);

          echo '    <li>
      <h4><a href="'.htmlspecialchars($article->getUrl()).'">'.$article->getName().'</a></h4>
      <p class="highlightedtext">'.$text.'</p>
      <p class="url">'.$REX['SERVER'].rex_getUrl($hit['fid'], $hit['clang']).'</p>
    </li>';
        }
      }
      echo '</ul>';

      // Pagination
      if($result['count'] > SHOWMAX)
      {
        $self = OOArticle::getArticleById(REX_ARTICLE_ID);
        echo '<ul class="pagination">';
        for($i = 0; ($i*SHOWMAX) < $result['count']; $i++)
        {
          if(($i*SHOWMAX) == $start)
            echo '<li>'.($i+1).'</li>';
          else
            echo '<li><a href="'.$self->getUrl(array('xsearch' => $_REQUEST['xsearch'], 'start' => $i*SHOWMAX)).'">'.($i+1).'</a></li>';
        }
        echo '</ul>';
      }
    }
    else
    {
      echo '<em>Leider nichts gefunden.</em>';
    }
  }

?> 
Und dann habe ich noch eine Frage: Gibt es irgendwo die Möglichkeit, Groß-/Kleinschreibung zu ignorieren? Ein Blick in die Statistik gibt mir das Gefühl, dass die Leute zunehmen schreibfaul geworden sind und die Ähnlichkeitssuche scheint da nicht zu greifen.

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

16. Aug 2010, 15:07

Hi Alex!
alexplus hat geschrieben:Ich meine, ich hätte jetzt alle relevanten Stellen der DB-Suche in den Code der PDF-Suche an richtiger Stelle eingefügt, doch jetzt gibt die Suche mir keine PDF-Dateien mehr aus:
Mit der Methode searchInDbColumn teilst du XSearch explizit mit, dass nur die übergebenen Spalten durchsucht werden sollen.

Du hast zwei Möglichkeiten, um auch PDF-Dateien zu durchsuchen:
  1. Verzichte auf die explizite Angabe von DB-Spalten.
  2. Wenn es sich nur um PDF-Dateien aus dem Medienpool handelt, dann füge die Medienpooltabelle $REX['TABLE_PREFIX'].'file' hinzu.
alexplus hat geschrieben:Und dann habe ich noch eine Frage: Gibt es irgendwo die Möglichkeit, Groß-/Kleinschreibung zu ignorieren?
Es wird generell nicht zwischen Groß- und Kleinschreibung unterschieden, solange keine binären Datenbanktypen verwendet werden. Eine Suche nach "begriff" findet grundsätzlich auch "BEGRIFF", "Begriff", "bEgRiFf", etc.
alexplus hat geschrieben:Ein Blick in die Statistik gibt mir das Gefühl, dass die Leute zunehmen schreibfaul geworden sind und die Ähnlichkeitssuche scheint da nicht zu greifen.
Die Ähnlichkeitssuche schlägt nur an, wenn zu dem Suchbegriff nichts gefunden wurde, aber eine ähnlicher Begriff existiert, der zu Suchergebnissen führt. Außerdem muss für die Ähnlichkeitssuche der Keyword-Index (TABLE_PREFIX.587_keywords) aufgebaut sein. Der wird normalerweise bei der Indexierung erzeugt.
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

Benutzeravatar
alexplus
Beiträge: 212
Registriert: 13. Feb 2007, 15:03
Wohnort: Heilbronn
Kontaktdaten: Website

16. Aug 2010, 15:17

Xong hat geschrieben: Du hast zwei Möglichkeiten, um auch PDF-Dateien zu durchsuchen:
  1. Verzichte auf die explizite Angabe von DB-Spalten.
  2. Wenn es sich nur um PDF-Dateien aus dem Medienpool handelt, dann füge die Medienpooltabelle $REX['TABLE_PREFIX'].'file' hinzu.
Wird dann auch der PDF-Inhalt durchsucht? Wenn ich die explizite Angabe entferne, hat er sie bei mir nicht mehr durchsucht. Aber ich begebe mich nochmals auf Fehlersuche. Da hatte ich wohl den Suchindex vergessen zu erneuern oder den Suchcache nicht gelöscht. Wo ist nur meine Konzentration?
Xong hat geschrieben:Es wird generell nicht zwischen Groß- und Kleinschreibung unterschieden, solange keine binären Datenbanktypen verwendet werden. Eine Suche nach "begriff" findet grundsätzlich auch "BEGRIFF", "Begriff", "bEgRiFf", etc.
Das ist bei mir definitiv nicht so. "termine" findet nichts, während "Termine" mir die Suchergebnisse präsentiert. Woran erkenne ich denn einen binären Datenbanktyp? Meine Datenbank hast du ja schon mal kennengelernt ;)

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

16. Aug 2010, 15:39

alexplus hat geschrieben:
Xong hat geschrieben: Du hast zwei Möglichkeiten, um auch PDF-Dateien zu durchsuchen:
  1. Verzichte auf die explizite Angabe von DB-Spalten.
  2. Wenn es sich nur um PDF-Dateien aus dem Medienpool handelt, dann füge die Medienpooltabelle $REX['TABLE_PREFIX'].'file' hinzu.
Wird dann auch der PDF-Inhalt durchsucht? Wenn ich die explizite Angabe entferne, hat er sie bei mir nicht mehr durchsucht. Aber ich begebe mich nochmals auf Fehlersuche.
Nochmal damit das klar wird: Gibst du DB-Spalten explizit an, dann werden nur diese durchsucht. Sind keine angegeben, dann wird alles durchsucht.
Wenn PDF-Dateien nicht durchsucht werden, dann gibt´s da natürlich wieder mehrere Fehlerquellen. XSearch könnte noch einen Bug haben oder die Indexierung könnte bei den PDF-Dateien fehlgeschlagen sein. Die eingesetzte PDF-Parser-Klasse ist von mir selbst entwickelt worden und findet zu meinem Leidwesen auch nicht alle Inhalte aus allen PDF-Versionen. Dafür müsstest du auf dem Server das Programm pdf2text von XPDF installieren. Wenn die Inhalte aber in der Datenbank sind, dann müssten sie auch gefunden werden.

Eventuell liegt das Problem hier auch beim Suchmodul. Wenn die Dateien z. B. eine Dateiendung "PDF" (also Großbuchstaben) haben, dann schließt das Modul diese Dateien von den Ergebnissen aus.
alexplus hat geschrieben:Das ist bei mir definitiv nicht so. "termine" findet nichts, während "Termine" mir die Suchergebnisse präsentiert.
Sehr ungewöhnlich. Kannst du mir Zugang zu Redaxo und DB geben?
alexplus hat geschrieben:Woran erkenne ich denn einen binären Datenbanktyp?
BINARY, VARBINARY und BLOB sind binäre Datentypen. Aber die wirst du vermutlich nicht verwenden.
alexplus hat geschrieben:Meine Datenbank hast du ja schon mal kennengelernt ;)
Ich kann mich zwar daran erinnern, aber die Datenbank habe ich echt nicht mehr im Kopf. Wenn du wüsstest, wieviel Datenbanken ich in den letzten Monaten bestaunen durfte... :D
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

skinnychubaka
Beiträge: 24
Registriert: 25. Jun 2010, 11:19

4. Sep 2010, 16:08

Hallo Leute,

tolles Addon hab nur leider ein paar probleme,

und läuft die automatische indexierung nicht richtig z.B. etwas aktualisieren funkioniert aber wenn ich einen artikel lösche melded er objekt ist null oder offline stelle zeigt er immer noch das such ergebnis an.

bitte helft mir oder verweist mich auf den entsprechenden eintrag
danke sehr

Benutzeravatar
Peter.Bickel
Beiträge: 1856
Registriert: 25. Jan 2005, 21:17
Wohnort: Schleswig-Holstein
Kontaktdaten: Website

4. Sep 2010, 16:52

Hallo Robert,

tut mir leid, falls meine Frage hier schon mal erklärt wurde ...
Hast Du einen Tipp, wie man Deine Suche so ausweiten müssten, damit sie auch Seiten findet, die Daten per SQL aus der Datenbank holt?

Beispiel: Ich habe eine Seite, wo News ausgegeben werden, die in einer eigenen Tabelle lliegen. Die News werden mit einer SQL-Abfrage ausglesen, allerdings nur xx pro Seite. Eine selbst programmierte Paginierung steuert via Get-Parameter die Links zu den weiteren "virtuellen" Seiten.

Bin im Moment grade ratlos, wie man sowas über Dein Such-AddOn erfassen kann.

Danke im Voraus,
Peter.

Benutzeravatar
alexplus
Beiträge: 212
Registriert: 13. Feb 2007, 15:03
Wohnort: Heilbronn
Kontaktdaten: Website

4. Sep 2010, 17:04

Xong hat geschrieben: BINARY, VARBINARY und BLOB sind binäre Datentypen. Aber die wirst du vermutlich nicht verwenden.
Doch, genau das war der Fall :( Alles in BLOB. Nicht, dass das von mir beabsichtigt gewesen wäre :?

Mit deinem Hinweis hab ich mich gleich auf die Suche nach der Lösung begeben, die ich dann auch unter http://dev.mysql.com/doc/refman/5.1/de/alter-table.html gefunden habe:

Code: Alles auswählen

ALTER TABLE Tabellenname CONVERT TO CHARACTER SET utf8
Die betroffenen Tabellen konvertiert et voilà, alles funktioniert so wie es soll!

Tausend und einen Dank!

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

16. Sep 2010, 10:02

Hej,

ich häng mich mal an Peters Frage ran.

Ich lasse bestimmte Spalten eines Addons mit indexieren. Bekomme aber als fid eine negative ID und nicht die ID des Datensatzen geliefert.

Wie schafft man Abhilfe um von der Ergbnissseite zur Artikelseite der Ausgabe zu gelangen?

Danke euch.

vg Thomas

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

16. Sep 2010, 11:54

Hallo Peter und Thomas!

Deinen Post habe ich vollkommen übersehen, Peter. Sorry dafür.
Peter.Bickel hat geschrieben:Hast Du einen Tipp, wie man Deine Suche so ausweiten müssten, damit sie auch Seiten findet, die Daten per SQL aus der Datenbank holt?
Das geht nicht direkt, sondern nur über den Umweg der Indexierung der Datenbankspalten.
Peter.Bickel hat geschrieben:Beispiel: Ich habe eine Seite, wo News ausgegeben werden, die in einer eigenen Tabelle lliegen. Die News werden mit einer SQL-Abfrage ausglesen, allerdings nur xx pro Seite. Eine selbst programmierte Paginierung steuert via Get-Parameter die Links zu den weiteren "virtuellen" Seiten.
Du müsstest also alle für die News relevanten DB-Spalten indexieren und das Suchmodul entsprechend anpassen, dass aus der "fid" (Fremd-/Foreign-ID) den Link bastelt, der auf die entsprechende Newsseite zeigt. Eventuell ist es dafür nötig, die neue Version 0.6 zu verwenden.
Thomas.Blum hat geschrieben:Ich lasse bestimmte Spalten eines Addons mit indexieren. Bekomme aber als fid eine negative ID und nicht die ID des Datensatzen geliefert.

Wie schafft man Abhilfe um von der Ergbnissseite zur Artikelseite der Ausgabe zu gelangen?
Das ist noch ein Problem in Xsearch gewesen. Ich habe deine Anfrage gleich mal zum Anlass genommen, XSearch dezent zu überarbeiten:

Code: Alles auswählen

  + Datenbankfeld "fid" vom Typ INT zum Typ VARCHAR(255)
    geändert
  + DEFAULT CHARSET der DB-Tabellen in "utf8" geändert
  + Funktionen json_encode und json_decode für PHP < 5.2
    hinzugefügt
  + Bei der Datenbankspalten-Indexierung wird das ID-Feld
    automatisch ermittelt und und der Wert in die DB-Spalte
    "fid" eingetragen
  + Unterstützung für Clustered Primary Keys für das Feld
    fid hinzugefügt, bei zusammengesetzten Primary Keys
    werden diese JSON-kodiert abgespeichert
  + Es können nicht mehr nur Text-, Char- und Varchar-
    Spalten, sondern DB-Spalten jeden Typs indexiert werden
  + Update-Möglichkeit von XSearch 0.5.4 auf 0.6 durch
    reinstallieren (ohne Datenverlust)
  + JS-Nachfrage, ob schrittweise Indexierung wirklich
    gestartet werden soll, hinzugefügt
Das bedeutet, wenn du XSearch neu- bzw. reinstallierst und die Indexierung neu startest, dann bekommst du im Feld "fid" auch die richtige(n) ID(s). Wenn du einen Clustered Primary Key benutzt, dann ist das ein Array aller IDs, ansonsten ein Skalar.

Ich konnte jetzt natürlich noch nicht ausgiebig testen, allerdings sind die Änderungen nicht kritisch.
Theoretisch müsste es ausreichen, diese Version nur zu reinstallieren. Dann wird die Db-Spalte "fid" automatisch geändert. Datenverlust dürfte keiner auftreten. Eine Sicherung empfehle ich euch natürlich trotzdem. =)

Wenn die DB-Tabellen noch nicht auf UTF-8 eingestellt sind und ihr UTF-8 verwendet, dann empfehle ich eine Neuinstallation.

Wenn´s Probleme gibt, einfach melden.
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

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

16. Sep 2010, 13:27

Hej Robert,

kurzes Feedback.

scheint zu funktionieren. Hatte mir in der Zwischenzeit den Index via indexColumn erstellt. Ist natürlich mühseliger, da man doppelt das indexieren starten musste.

besten Dnak und vg Thomas

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

16. Sep 2010, 14:12

Hej,

kleiner Fehler.

unter "Erscheinungsbild des Highlight-Texts" im Start-Tag könnte man eine CSS-Klasse angeben

Würde so aussehen.

Code: Alles auswählen

<span class="search-highlight">
XSearch notiert dies so

Code: Alles auswählen

<span class=\"search-highlight\">
was falsch ist.

PS: Hat jemand ein funktionierende highlighter Variante?

vg Thomas

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

16. Sep 2010, 14:59

Thomas.Blum hat geschrieben:unter "Erscheinungsbild des Highlight-Texts" im Start-Tag könnte man eine CSS-Klasse angeben

Würde so aussehen.

Code: Alles auswählen

<span class="search-highlight">
XSearch notiert dies so

Code: Alles auswählen

<span class="search-highlight">
was falsch ist.
Danke, Fehler behoben. Ursache ist ein Bug in der PHP-Funktion unserialize().
Thomas.Blum hat geschrieben:PS: Hat jemand ein funktionierende highlighter Variante?
Meinst du damit noch was anderes oder hat sich das damit erledigt?
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

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

16. Sep 2010, 15:24

Xong hat geschrieben:
Thomas.Blum hat geschrieben:PS: Hat jemand ein funktionierende highlighter Variante?
Meinst du damit noch was anderes oder hat sich das damit erledigt?
Es gibt ein highlighter Plugin, was das Suchwort auf den eigentlichen Artikeln optisch hervorhebt. Ist recht nützlich. Nur ersetzt das Plugin nicht nur reinen text sondern auch Wörter die <a>, <img> usw vorkommen.

Bspl.

Code: Alles auswählen

<im src="" title="suchwort" /> 
ergibt.

Code: Alles auswählen

<im src="" title="<span class="highlight">suchwort</span>" /> 
Ansonsten muss ich mal sehen ob ich die Zeit finde das anzupassen.

vg Thomas

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

16. Sep 2010, 17:39

Hi Thomas!

Ich habe die Funktion a685_getHighlightedText() des Highlighters von Timo angepasst. So ist sie wesentlich schneller und ersetzt nur Wörter außerhalb von HTML-Tags (also alles, was nicht zwischen "<" und ">" liegt):

Code: Alles auswählen

function a685_getHighlightedText($_subject, $_searchString, $_tags)
{
  preg_match_all('~(?:(\+*)"([^"]*)")|(?:(\+*)(\S+))~is', $_searchString, $matches, PREG_SET_ORDER);
  
  $searchterms = array();
  foreach($matches as $match)
  {
    if(count($match) == 5)
      // words without double quotes (foo)
      $word = $match[4];
    elseif(!empty($match[2]))
      // words with double quotes ("foo bar")
      $word = $match[2];
    else
      continue;
    
    $searchterms[] = preg_quote($word, '~');
  }
  
  return preg_replace('~(?<!\<)('.implode('|', $searchterms).')(?![^<]*\>)~ims', $_tags[0].'$1'.$_tags[1], $_subject);
}
Zuletzt geändert von Xong am 16. Sep 2010, 23:39, insgesamt 1-mal geändert.
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

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

16. Sep 2010, 19:44

Hej Robert,

passt perfekt.

Zu sehen ist das ganze hier http://www.elbepark.info/

vg Thomas

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

6. Okt 2010, 23:57

Mir ist aufgefallen, dass der Name XSearch eine eingetragene Marke ist. Deshalb heißt das Addon ab sofort RexSearch.

Die letzten Änderungen:

Code: Alles auswählen

Version 0.6.1 (2010-10-04)
  + Datenbankfeld "values" hinzugfügt,
    indexierte Spalten einer Datenbanktabelle werden in dieses Feld
    ein getragen und stehen bei der Ausgabe der Suchergebnisse zur
    Verfügung
  + automatische Indexierung optimiert (a587_handle_extensionpoint)

Version 0.7 (2010-10-06)
  + Name des Addons in RexSearch geändert
Wichtigste Neuerung ist die neue Verfügbarkeit von zusätzlichen Daten in den Suchergebnissen. Wenn Datenbankspalten indexiert werden, so stehen bei einem Suchergebnis alle Werte des Datensatzes zur Verfügung, solange diese Daten aus weiteren ausgewählten Spalten der Datenbanktabelle kommen.

Beispiel:
In den RexSearch-Einstellungen wurden die Datenbankspalten `rex_article`.`name`, `rex_article`.`art_description` und `rex_article`.`art_keywords` ausgewählt.
Wenn nun eine Suche ein Ergebnis beispielsweise in der Spalte name findet, dann stehen bei diesem Suchergebnis auch die beiden Werte aus den Spalten art_description und art_keywords zur Verfügung.

Bei Fragen fragen. =)
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

Zurück zu „Allgemeines [R4]“