[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 2 - 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
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

6. Okt 2009, 00:12

kubber hat geschrieben:Kann jmd. ein Beispiel posten wie das Suchformular aussehen muss.
Ein einfaches Suchformular könnte so aussehen:

Code: Alles auswählen

<form id="xsearch_form" action="index.php" method="get">
  <fieldset><legend>Suche</legend>
    <input type="hidden" name="article_id" value="REX_ARTICLE_ID" />
    <input type="hidden" name="clang" value="0" />
    <input type="text" name="xsearch" value="<?php if(!empty($_GET['xsearch'])) echo htmlspecialchars($_GET['xsearch']); ?>" />
  </fieldset>
</form>
Wobei du die "article_id" (REX_ARTICLE_ID) ggf. noch anpassen musst.
LG,
Xong

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

kubber
Beiträge: 34
Registriert: 20. Mär 2007, 11:25

6. Okt 2009, 09:41

Danke das probier ich mal aus - ich habe gestern noch festgestellt das wenn ich von DE_UTF8 auf "nicht UFT8" stelle die Suche doch funktioniert. Ich glaube es lag gar nicht am Paramenter. Ich habe aber momentan noch zu wenig Content um zu sagen ob es bei mir richtig funktioniert.

Poste mein Feedback gerne sobald ich da mehr drin habe.

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

6. Okt 2009, 16:22

So, ich habe heute weiter an der Doku gearbeitet.

Allerdings fällt mir gerade auf, dass das Wichtigste fehlt: Die Beschreibung des Ergebnisarrays... =)
Mach ich dann morgen.
LG,
Xong

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

markusnolte
Beiträge: 74
Registriert: 24. Nov 2008, 18:27
Wohnort: Steinheim

7. Okt 2009, 12:59

Hallo zusammen,

also erstmal muss ich sagen, dass hier ein feines Such-AddOn entstanden ist! Die Möglichkeit eigene AddOn-Tabellenfelder mit durchsuchen zu lassen ist einfach klasse!

Aber leider habe ich noch ein Problem mit Umlauten... Wenn ich die Suche in die Demo (REDAXO 4.2.1/utf-8, sowohl Backend als auch Frontend) einfüge und z.B. nach 'möglich' suche und dann das $result-Array augebe, bekomme ich folgende Ausgabe:

Code: Alles auswählen

Array ( [hits] => Array ( ) [keywords] => Array ( [0] => Array ( [search] => m??glich [weight] => 1 ) ) [sql] => SELECT ((( MATCH (`plaintext`) AGAINST ('m??glich')) * 1)) AS RELEVANCE587,id,fid,ftable,fcolumn,texttype,clang,unchangedtext,plaintext FROM rex_587_searchindex WHERE (((`plaintext` LIKE '%m??glich%'))) ORDER BY RELEVANCE587 DESC LIMIT 0,10 [blacklisted] => )
Also die Umlaute werden nicht korrekt in den SQL-String übernommen. Woran kann das liegen?
Viele Grüße

Markus

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

7. Okt 2009, 15:00

Hallo Markus!
markusnolte hat geschrieben:Also die Umlaute werden nicht korrekt in den SQL-String übernommen. Woran kann das liegen?
Das lag an einem Fehler im Addon. Ich habe ihn beseitigt und eine neue Version hochgeladen.

Besonders stolz bin ich auf eine neue Option.
Es trat nämlich folgendes Problem auf:
Wenn von einem Artikel über die Datenbankspalten auch z. B. der Titel/Name und die Beschreibung indexiert waren und nach einem Suchbegriff gesucht wurde, der im Artikel selbst und in diesen zwei Spalten dieses Artikels auftauchte, dann bekam man als Ergebnis auch dreimal diesen Artikel.

Die Lösung:
Ein Artikel (übrigens auch ein Medium aus dem Medienpool) erscheinen jetzt maximal einmal in den Suchergebnissen, wobei derjenige Datensatz ausgewählt wird, der die höchste Relevanz hat.

Diese Option kann mit der Methode doGroupBy($_bool = true) auch ausgeschaltet werden, indem man false übergibt.
LG,
Xong

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

markusnolte
Beiträge: 74
Registriert: 24. Nov 2008, 18:27
Wohnort: Steinheim

7. Okt 2009, 16:10

Hallo Xong,

die neue Option ist natürlich wieder eine super Verbesserung. Allerdings bekomme ich jetzt bei jeder Suche nachfolgenden Fehler:

Code: Alles auswählen

Warning: Wrong parameter count for array_unique() in C:\xampplite\htdocs\redaxo4_2_1\redaxo\include\addons\xsearch\classes\class.xsearch.inc.php on line 684
Ich sehe gerade, dass der Fehler nicht nur bei einer Suche auftritt, sondern auch im Backend beim Bearbeiten eines Artikels auftritt.

Und bei Wörtern mit Umlauten wird immer noch nix gefunden, da die Umlaute in der DB (eingepflegt über TinyMCE) in der Spalte plaintext maskiert sind, also z.B. m&ouml;glich! D.h. suche ich m&ouml;glich, wird natürlich etwas gefunden.

Liegt das jetzt an TinyMCE? Und wie kann man das Problem am sinnvollsten lösen?
Viele Grüße

Markus

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

7. Okt 2009, 16:32

Hallo Markus!

Danke für deine gute Fehlerbeschreibung.
markusnolte hat geschrieben:die neue Option ist natürlich wieder eine super Verbesserung. Allerdings bekomme ich jetzt bei jeder Suche nachfolgenden Fehler:

Code: Alles auswählen

Warning: Wrong parameter count for array_unique() in C:\xampplite\htdocs\redaxo4_2_1\redaxo\include\addons\xsearch\classes\class.xsearch.inc.php on line 684
Ich sehe gerade, dass der Fehler nicht nur bei einer Suche auftritt, sondern auch im Backend beim Bearbeiten eines Artikels auftritt.
Das Problem wurde behoben. Die Methode und das Attribut hatten den gleichen Namen.
markusnolte hat geschrieben:Und bei Wörtern mit Umlauten wird immer noch nix gefunden, da die Umlaute in der DB (eingepflegt über TinyMCE) in der Spalte plaintext maskiert sind, also z.B. m&ouml;glich! D.h. suche ich m&ouml;glich, wird natürlich etwas gefunden.
Das ist ein Problem, das mir schon von Anfang an bekannt war.
markusnolte hat geschrieben:Liegt das jetzt an TinyMCE? Und wie kann man das Problem am sinnvollsten lösen?
Zwei Vorschläge, wobei der erste eindeutig zu bevorzugen ist:
  1. Bring dem Tiny bei, die Zeichen nicht in ihre Entitäten umzuwandeln. Das geht mit der Option entity_encoding : "raw".
  2. Behandle die Sucheingabe im Suchmodul mit htmlentities, bevor du sie an die search-Methode weiterreichst.
LG,
Xong

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

markusnolte
Beiträge: 74
Registriert: 24. Nov 2008, 18:27
Wohnort: Steinheim

7. Okt 2009, 16:56

Hallo Xong,

jetzt läuft alles prima! Habe mich für die erste Variante entschieden und den TinyMCE angepasst. Jetzt teste ich noch die Suche über die Felder meiner eigenen AddOns und melde Prombleme natürlich sofort... :wink:

Vielen Dank für das tolle AddOn und für deine Hilfe! Die Suche scheint ja jetzt grundsätzlich mal sehr flexibel und kein Sorgenkind mehr zu sein! Echt klasse!
Viele Grüße

Markus

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

7. Okt 2009, 17:45

Ich habe noch ein paar Bugs entfernt.
Mit dieser Version ist das Addon prinzipiell für den Produktiveinsatz zu gebrauchen.

Probleme und Bugs bitte hier melden. Ich kümmere mich dann umgehend darum.
LG,
Xong

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

Mukido
Beiträge: 49
Registriert: 14. Mär 2008, 15:18

8. Okt 2009, 09:49

Auch von mir vielen Dank für das klasse Addon.

Die Suche in den Artikeln funktioniert Wunderbar. Ich habe dein Beispiel Addon "Suche mit Pagination" genommen.

Leider werden die Tabellen mit meinem eigenen Addon nicht durchsucht bzw. es wird kein Ergebniss geliefert. Im Backend habe ich die Tabellen markiert.

Ich teste das ganze lokal, daher kann ich Dir keinen Zugang einrichten.

Gruß Marco

markusnolte
Beiträge: 74
Registriert: 24. Nov 2008, 18:27
Wohnort: Steinheim

8. Okt 2009, 11:17

Hallo Xong!

So, ich hab´s jetzt auch mal mit ´nem eigenen AddOn getestet. Entgegen Marco´s Feststellung kann ich sagen, dass die angegebenen Spalten meines AddOn´s zwar durchsucht und auch Ergebnisse geliefert werden, jedoch keine Aktualisierung der Suchergebnisse nach einer Änderung von Daten in meinem AddOn erfolgt. Also es erfolgt auch keine Aktualisierung in der Tabelle rex_587_searchindex. Aber ich denke, dass dir das bekannt ist...

Erst wenn man in XSearch den Index schrittweise erstellt, tauchen die Änderungen der Daten in meinem AddOn wieder in den Suchergebnissen auf! Die Frage ist also, wie man die Aktualisierung von zusätzlichen Spalten automatisiert!?

Hast du dazu eine Idee? Ich glaube du kennst dich am Besten in deinem AddOn aus... :wink:
Viele Grüße

Markus

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

8. Okt 2009, 13:48

@Mukido: Das reine Markieren der Spalten in den Addoneinstellungen, indexiert die Spalten noch nicht. Die Indexierung muss manuell gestartet werden.

@Markus: Das Problem der teilweise fehlenden automatischen Indexierung ist der Flexibilität des Addons geschuldet.
Natürlich kannst du aber Spalten auch nachträglich oder neu indexieren.

Der folgende Code indexiert eine gesamte DB-Spalte neu:

Code: Alles auswählen

$xsearch = new XSearch;
$xsearch->indexColumn('tabelle', 'spalte');
Wenn du die ID des Eintrags kennst, der neu indexiert werden soll, dann kannst du diese auch direkt angeben:

Code: Alles auswählen

$xsearch = new XSearch;
$xsearch->indexColumn('tabelle', 'spalte', 'id', $id);
Dabei ist der dritte Paramter der Name der ID-Spalte der Tabelle (in der Tabelle rex_article wäre das z. B. "id") und der vierte Parameter ist die eigentliche ID, des Datensatzes, der neu indexiert werden soll.

(Sinnfreies) Beispiel: Der Name eines Artikels mit der ID 10 wird in einem Modul verändert. Die Datenbankspalte rex_fpsw_article.name ist mit XSearch indexiert. Das Modul, das den Name ändert, soll nun auch automatisch die Indexierung erneuern. Da es nicht nötig ist, alle Artikelnamen neu zu indexieren, nutzen wir die ID des Artikels, die wir ja kennen.
Das geht so:

Code: Alles auswählen

$xsearch = new XSearch;
echo $xsearch->indexColumn('rex_fpsw_article', 'name', 'id', REX_ARTICLE_ID);
Der dritte Parameter ist übrigens deshalb notwendig, weil die identifizierenden DB-Spalten nicht immer "id", sondern z. B. auch "file_id", "eidie", etc. heißen können.

Übrigens müsst ihr das Addon nochmal neu laden, da noch ein Fehler im Suchcache war. Ich arbeite noch ein wenig an der Doku. Dort wird dann auch bald stehen, unter welchen Bedingungen Artikel oder DB-Spalten automatisch indexiert werden.
LG,
Xong

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

markusnolte
Beiträge: 74
Registriert: 24. Nov 2008, 18:27
Wohnort: Steinheim

8. Okt 2009, 14:13

Hey Xong,

das ist genau das, was ich gesucht habe! Jetzt werden die Änderungen sofort übernommen. Vielen Dank! Hätte mir die Doku im Wiki wohl besser anschauen sollen... :wink:
Viele Grüße

Markus

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

8. Okt 2009, 14:34

markusnolte hat geschrieben:das ist genau das, was ich gesucht habe! Jetzt werden die Änderungen sofort übernommen. Vielen Dank! Hätte mir die Doku im Wiki wohl besser anschauen sollen... :wink:
Das hätte dir ausgerechnet bei dieser Methode (und zwar nur bei dieser :lol: ) gar nichts genutzt, weil diese Methode gerade nochmal in ihrer Schnittstelle verändert wurde. Dafür konnte ich sie jetzt testen und auch gleich einen Bug beheben.

Was mich sehr interessiert, sind die Zeiten, die eure Suchabfrage brauchen. Dabei interessiert mich vor allem der Vergleich zwischen erster und zweiter Suchabfrage, da bei der ersten Abfrage die Suche noch nicht gecached wurde.

Meine bisherigen Erfahrungen bei einer eher kleinen Seite zeigen bisher Verbesserungen um den Faktor 10...150, wenn die Suche schon im Cache vorhanden ist. Das hängt natürlich vor allem von der Größe des Suchindex und der Suchworte ab.

Habt ihr da schon Ergebnisse?
Die Dauer der Suche findet ihr im Ergebnisarray beim Index "time": $result['time'].
LG,
Xong

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

markusnolte
Beiträge: 74
Registriert: 24. Nov 2008, 18:27
Wohnort: Steinheim

8. Okt 2009, 14:58

Also was die Zeit betrifft, kann ich die messbare Beschleunigung bestätigen. Allerdings fällt diese gefühlt nicht auf... Da muss man mal abwarten, wenn man es mit einer wirklich großen Seite zu tun hat.

Allerdings ist mir jetzt wieder eine Sache aufgefallen... :D Es funktioniert keine Teilbegriffsuche mehr! Wurde in der vorherigen Version noch 'Anpassungsfähigkeit' gefunden, wenn man nach 'Anpassung' gesucht hat, wird jetzt kein Ergebnis mehr zurückgeliefert.
Viele Grüße

Markus

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

8. Okt 2009, 15:12

markusnolte hat geschrieben:Allerdings ist mir jetzt wieder eine Sache aufgefallen... :D Es funktioniert keine Teilbegriffsuche mehr! Wurde in der vorherigen Version noch 'Anpassungsfähigkeit' gefunden, wenn man nach 'Anpassung' gesucht hat, wird jetzt kein Ergebnis mehr zurückgeliefert.
Ups... Ist behoben! =)
LG,
Xong

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

markusnolte
Beiträge: 74
Registriert: 24. Nov 2008, 18:27
Wohnort: Steinheim

8. Okt 2009, 15:29

So ganz war es das noch nicht... Suche ich nach 'software', wird 'Redaktionssoftware' gefunden. Suche ich nach 'redaktion', wird nichts gefunden! Also Wörter, die mit dem Suchbegriff beginnen, werden noch nicht wieder gefunden.
Viele Grüße

Markus

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

8. Okt 2009, 16:45

markusnolte hat geschrieben:So ganz war es das noch nicht... Suche ich nach 'software', wird 'Redaktionssoftware' gefunden. Suche ich nach 'redaktion', wird nichts gefunden! Also Wörter, die mit dem Suchbegriff beginnen, werden noch nicht wieder gefunden.
Ich kann das Problem nicht mehr nachvollziehen.

Kannst du das Addon nochmal laden und testen, ob der Fehler noch auftaucht?
LG,
Xong

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

markusnolte
Beiträge: 74
Registriert: 24. Nov 2008, 18:27
Wohnort: Steinheim

8. Okt 2009, 17:12

Hey Xong,

jetzt passt es. Vielleicht habe ich auch irgendwo einen Fehler gemacht...
Ich bin aktuell echt sehr zufrieden mit dem Such-AddOn... :D Sollte mir noch was auffallen, melde ich es dir natürlich sofort! :wink:
Viele Grüße

Markus

Mukido
Beiträge: 49
Registriert: 14. Mär 2008, 15:18

8. Okt 2009, 17:34

Hallo,

noch mal zu meinem Addon Problem.
Die Tabellen werden indexiert. Aber meine Suchausgabe bleibt leer. Ich mache hier wahrscheinlich einen grundlegenden Fehler aber welchen?

Gruß Marco

markusnolte
Beiträge: 74
Registriert: 24. Nov 2008, 18:27
Wohnort: Steinheim

8. Okt 2009, 17:43

Hey Xong,

eine Sache ist mir tatsächlich noch aufgefallen, obwohl ich nicht weiß, ob das nicht vielleicht so sein soll!? Wenn ich das AddOn installiere, reicht es nicht aus, 'Index vollständig erstellen' auszuführen. Stattdessen ist es für die komplette erste Indexierung notwendig (für Artikel und zusätzliche Spalten), dass man 'Index schrittweise erstellen' ausführt. Ist das die korrekte Vorgehensweise und so gewollt?

Ich habe noch mal im Wiki und in diesem Thread nachgesehen aber keine Erklärung dazu gefunden. Wenn es gewollt ist, ist es ja nicht schlimm... :wink: Nur das die Vorgehensweise klar ist.
Viele Grüße

Markus

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

8. Okt 2009, 17:48

Mukido hat geschrieben:noch mal zu meinem Addon Problem.
Die Tabellen werden indexiert. Aber meine Suchausgabe bleibt leer. Ich mache hier wahrscheinlich einen grundlegenden Fehler aber welchen?
Es klingelt gerade. In meinem Kopf. =)

Der Fehler liegt im Beispielmodul. Ich habe es mal leicht abgewandelt: Beispiel 5
LG,
Xong

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

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

8. Okt 2009, 17:53

markusnolte hat geschrieben:eine Sache ist mir tatsächlich noch aufgefallen
Je mehr Fehler in diesem Stadium des Addons entdeckt werden, desto besser. =)
markusnolte hat geschrieben:Wenn ich das AddOn installiere, reicht es nicht aus, 'Index vollständig erstellen' auszuführen. Stattdessen ist es für die komplette erste Indexierung notwendig (für Artikel und zusätzliche Spalten), dass man 'Index schrittweise erstellen' ausführt. Ist das die korrekte Vorgehensweise und so gewollt?
Vermutlich liegt das an einem Skriptabbruch, weil die maximale Skriptausführungszeit überschritten wurde.
Könntest du das mal testen, in dem du testweise das Error-Reporting-Level hochschraubst?
markusnolte hat geschrieben:Ich habe noch mal im Wiki und in diesem Thread nachgesehen aber keine Erklärung dazu gefunden. Wenn es gewollt ist, ist es ja nicht schlimm... :wink: Nur das die Vorgehensweise klar ist.
Die Vorgehensweise des Addons möchte ich in der Doku auch noch erläutern. Das wird aber ein etwas längerer Text. Deshalb bin ich bis jetzt noch nicht dazu gekommen.

Danke auf jeden Fall für deine Hilfe.
LG,
Xong

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

markusnolte
Beiträge: 74
Registriert: 24. Nov 2008, 18:27
Wohnort: Steinheim

9. Okt 2009, 17:28

Xong hat geschrieben:Vermutlich liegt das an einem Skriptabbruch, weil die maximale Skriptausführungszeit überschritten wurde.
Könntest du das mal testen, in dem du testweise das Error-Reporting-Level hochschraubst?
Also ich glaube auch, dass die Skriptausführung abgebrochen wird, aber nicht, dass es an der Skriptausführungszeit liegt, denn ich teste das mit der Demo und einem zusätzlichen Tabellenfeld.

Das geht ruck zuck, d.h. die vollständige Indexierung ist nach 1 Sekunde erledigt! Danach wird aber auf die Strukturverwaltung weitergeleitet, was vermutlich auch nicht so wirklich sein soll?!
Viele Grüße

Markus

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

12. Okt 2009, 09:04

markusnolte hat geschrieben:Das geht ruck zuck, d.h. die vollständige Indexierung ist nach 1 Sekunde erledigt! Danach wird aber auf die Strukturverwaltung weitergeleitet, was vermutlich auch nicht so wirklich sein soll?!
Welche Demo nimmst du dafür? Die, die bei der Installation von Redaxo angeboten wird?
LG,
Xong

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

Zurück zu „Allgemeines [R4]“