Coder Social home page Coder Social logo

friendsofredaxo / search_it Goto Github PK

View Code? Open in Web Editor NEW
64.0 12.0 18.0 1.6 MB

Umfangreiche Volltextsuche für REDAXO 5 CMS. Durchsucht Artikel, Medien, Dateien, PDF-Inhalte und Datenbank-Einträge.

Home Page: https://github.com/FriendsOfREDAXO/search_it

License: MIT License

CSS 0.94% PHP 96.61% JavaScript 2.45%
redaxo search frontend indexing keywords statistics redaxo-addon hacktoberfest

search_it's Issues

Notice

Bekomme noch eine Notice (7.0.6)

Notice: Undefined index: errormessages in /lorem/redaxo/src/addons/search_it/lib/search_it.php on line 1919

LG
Oliver

Doku: First Steps

Erläuterungen zu

  • Installation
  • Vorstellung Plugins
  • Default-Einstellungen
  • Demo-Module

PDF Dateien werden teilweise nicht indexiert

Bei sehr vielen PDF-Dateien kommt die Meldung.

is empty or could not be extracted.

In RexSearch bekomme ich zusätzlich diese Meldung beim indexieren.

Deprecated: Non-static method pdf2txt::directConvert() should not be called statically, assuming $this from incompatible context in /addons/rexsearch/classes/class.rexsearch.inc.php on line 956

Doku: Korrekturen Beispielmodule

Bei dem Beispiel mit der komplexen Suche kommt es zu einem Fehler, wenn man "Unterkategorien durchscuhen" aktiviert:

"ErrorException" thrown in rex:///module/16/output on line 52
Fatal error: Call to undefined function a587_getCategories()

Ändern in: search_it_getCategories()

Plaintext: Werte in der Datenbank aufräumen

     Schnitzel   sind dünn geschnittene  Fleischstücke   ohne  Knochen  , die meist zusätzlich mit einem  Fleischklopfer   (Plattiereisen) platt geklopft werden, was das Fleisch durch Aufbrechen der Muskelfasern zarter macht. In der Schweiz werden Schnitzel auch  Plätzli   genannt.   Tannenbaum Tannenbaum  

 Im Englischen bezeichnet der Begriff  Schnitzel   stets ein  paniertes   Schnitzel nach Art des  Wiener Schnitzels   . Das englische Wort für Schnitzel stammt aus der französischen Sprache und lautet  escalope  .  



 Vor allem in Österreich wird der Begriff Schnitzel auch oft einfach mit Panier gleichgesetzt. Man kann daher auch Fischschnitzel, Zucchinischnitzel und dergleichen sagen.  


Plaintext sollte doch eigentlich überflüssige Leerzeichen, Leerzeilen und Entitäten wie   aus dem Code schmeißen.

Ich würde sogar soweit gehen, dass dort ausschließlich a-z,A-Z abgelegt werden und Satzzeichen wie Klammern, Anführungszeichen entfernt werden. Die sorgen doch dafür, dass man LIKE statt MATCH AGAINST verwenden muss, um Begriffe in Anführungszeichen und Klammern zu finden, oder?

Dann stand ja noch die Frage offen, was überhaupt der Vorteil ist, HTML-Code zu durchsuchen. Mögliche Antwort: Attribute wie href="", title="" und alt="" werden in der HTML-Suche indexiert.

Statistik: Keyword zusammenfassen, wenn es Treffer und keine Treffer gab.

In der R4-Version war es so:

Wenn ein Suchbegriff nicht gefunden wurde, dann wird ja seitens der Statistik mitgezählt, wie oft er nicht gefunden wurde. Sobald es den Suchbegriff gibt, wird für die Statistik das Keyword erneut angelegt und ausgegeben, wie viele Suchen davon erfolgreich waren. (Siehe Bild: Vertretungsplan)

Auch Groß-/Kleinschreibung, die bei der Suche meines Wissens ignoriert wird, wird in der Statistik getrennt ausgegeben. Durch diese Darstellung wird die Statistik in meinen Augen verfälscht. (Siehe: bogy/BOGY/Bogy)

image

Würden die Werte addiert werden, wäre die Auswertung anders.

Vorschlag:

  • Suchbegriffe zwar case sensitive in der Datenbank speichern, aber in der Statistik zusammenfassen, entweder häufigste Schreibweise ausgeben oder immer klein.
  • Pro Begriff 3 Werte anzeigen: gesamt (grau), erfolglos (rot), erfolgreich (grün) (bei 0 erfolglosen oder 0 erfolgreichen Suchen bräuchte die Zahl 0 nicht ausgegeben werden)
  • Evtl. als Tabelle formatieren und FooTable verwenden. http://fooplugins.github.io/FooTable/

Feature: Debug-Modus

An einigen Stellen sollte search_it mehr mit dem Nutzer kommunizieren, was es macht und warum etwas evtl. fehlschlägt. $results liefert zwar eine Handvoll Informationen, aber diese Ausgaben gezielt Ein- und Ausschalten zu können, wäre von Vorteil.

Index vollständig erstellen - Warnungen

Warning: array_key_exists() expects parameter 2 to be array, null given in /kunden/322541_70190/......redaxo/src/addons/search_it/lib/search_it.php on line 519
Warning: array_key_exists() expects parameter 2 to be array, null given in /kunden/322541_70190/......redaxo/src/addons/search_it/lib/search_it.php on line 519
Warning: array_key_exists() expects parameter 2 to be array, null given in /kunden/322541_70190/......redaxo/src/addons/search_it/lib/search_it.php on line 519
Warning: array_key_exists() expects parameter 2 to be array, null given in /kunden/322541_70190/......redaxo/src/addons/search_it/lib/search_it.php on line 519
Warning: array_key_exists() expects parameter 2 to be array, null given in /kunden/322541_70190/......redaxo/src/addons/search_it/lib/search_it.php on line 519
Warning: array_key_exists() expects parameter 2 to be array, null given in /kunden/322541_70190/......redaxo/src/addons/search_it/lib/search_it.php on line 519
Warning: array_key_exists() expects parameter 2 to be array, null given in /kunden/322541_70190/......redaxo/src/addons/search_it/lib/search_it.php on line 519
Warning: array_key_exists() expects parameter 2 to be array, null given in /kunden/322541_70190/......redaxo/src/addons/search_it/lib/search_it.php on line 519
Warning: array_key_exists() expects parameter 2 to be array, null given in /kunden/322541_70190/......redaxo/src/addons/search_it/lib/search_it.php on line 519
Warning: array_key_exists() expects parameter 2 to be array, null given in /kunden/322541_70190/......redaxo/src/addons/search_it/lib/search_it.php on line 519
Warning: array_key_exists() expects parameter 2 to be array, null given in /kunden/322541_70190/......redaxo/src/addons/search_it/lib/search_it.php on line 519
Warning: array_key_exists() expects parameter 2 to be array, null given in /kunden/322541_70190/......redaxo/src/addons/search_it/lib/search_it.php on line 519
Warning: array_key_exists() expects parameter 2 to be array, null given in /kunden/322541_70190/......redaxo/src/addons/search_it/lib/search_it.php on line 519
Warning: Invalid argument supplied for foreach() in /kunden/322541_70190/......redaxo/src/addons/search_it/lib/search_it.php on line 388

Doku: $REX['SERVER'] u.a. korrigieren

Die meisten Ausgabe-Module müssten intakt sein, wenn $REX durch das Äquivalent in R5 ersetzt wird.

Beim Such-Eingabefeld-Beispiel wäre method="post" empfehlenswert, sonst wird die URL so komisch und bei action="" sollte eine redaxo-URL rein mit dem Hinweis, dass die ID der ID des Suchergebnisses entsprechen muss. Außerdem überall vorbildlich rex_request() verwenden statt $_REQUEST oder $_GET

Notice

Notice: Undefined index: outputleft in /Applications/MAMP/htdocs/rex5basic4/redaxo/src/addons/search_it/functions/functions_search_it.php on line 383

Darstellungsfehler Dateisuche

Die multiselect-Eingabefelder sollten immer volle Breite bekommen - sicherlich fehlt bloß eine Bootstrap-Klasse o.ä.

image

Vereinheitlichung Schreibweise

Das Addon heißt Search it wird aber öfters als search_it bezeichnet. Besser nur die Klasse "search_it" nennen, aber wenn vom Addon die Rede ist, immer Search it. Die Datenbanktabelle wiederum heißt searchit, ist das beabsichtigt?

error() gibt's nicht im Frontend

Das Issue hatte ich mal bei Xong aufgemacht, allerdings erfolglos:

Bin zufällig darauf gestoßen, weil ich das mit dem setOrder lösen wollte:
https://github.com/xong/rexsearch/blob/master/classes/class.rexsearch.inc.php#L1371

Im Frontend gibt's die Funktion error() nicht, daher findet auch keine Fehlerausgabe statt. Behelfsweise

function error($e) { print_r($e); }
ins Modul geschrieben, um den Fehler lesen zu können.

PS: xform + rexsearch zusammen machen echt Spaß. Schon lang nicht mehr so gerne in meiner Freizeit an einem Projekt gebastelt. Ich hoffe, im Februar bald eine tolle Referenz online zu stellen, die Mitarbeiter, Räume, News usw. durchsucht und getrennte Ergebnisse dafür ausgibt.

Das Problem besteht auch jetzt noch. Die Ausgabe von Fehlern sollte auch im Frontend stattfinden.

Ähnlichkeitssuche: Verbesserte Vorschläge? / Hunspell?

Wie werden Keywords für die Ähnlichkeitssuche aktuell generiert? Mir kommt es vor, als ob dafür jeder eingegebene Suchbegriff herangezogen wird (, der zumindest einen Treffer gelandet hat). Das führt dazu, dass auch falsch geschriebene Suchbegriffe das darauffolgende Mal verwendet wird und in "Meinten Sie..." vorgeschlagen wird.

Test:

  • Suchbegriff "Puddi" findet "Pudding" (Puddi wird in den Index aufgenommen)
  • Suchbegriff "Pudde" führt zu "Meinten Sie Puddi"?

So ist die "Meinten Sie..."-Suche ja nicht gedacht. Die Meinten-sie-Vorschläge sollte nur aus Begriffen bestehen, die bei der Indexierung gefunden wurde.

Doppelte Treffer vermeiden

Wenn ich das richtig verstehe, ist search_it ja eine Volltextsuche - beim Indexieren wird also nur der Inhalt durchsucht. Werden Artikelname, Kategoriename oder dergleichen nicht ausgegeben, dann werden diese Begriffe dort auch nicht indexiert. (Vielleicht nicht best practice, kommt aber vor)

Um also Meta-Infos (yrewrite_seo_description oder den Artikelnamen) zu indexieren, müssen zusätzlich noch die zugehörigen rex_article-Datenbankspalten indexiert werden. Das wiederum führt zu doppelten Treffern:

  • Ein Suchbegriff wird einmal über die Volltextsuche gefunden
  • und einmal über die Datenbanksuche.

Habe ich das richtig erfasst? Lässt sich das irgendwie vermeiden?

(Mir wäre das für die Doku wichtig, weil ich intuitiv damit rechne, dass ein Artikel nur einen Treffer darstellt, nicht zwei.)

Manuelles Reindexieren von Artikeln und im Table Manager

Laut https://github.com/tyrant88/search_it/blob/master/plugins/reindex/README.md gab es die Möglichkeit, Artikel und YForm auch manuell zu reindexieren, allerdings gibt es die entsprechenden EPs nicht mehr.

Evtl. könnten @dergel oder @gharlan dabei helfen, diese EP wieder zur Verfügung zu stellen.

YForm:

  • EP zum manuellen reindexieren, Button entsprechend an der Tabelle oder an einzelnen Datensätzen

Structure:

  • EP für zusätzlichen Tab / Sidebar-Block nutzen
  • Button zum manuellen Reindexieren
  • Button zum Hinzufügen in Blacklist/Whitelist (Feature gibt's ja schon innerhalb der Addons)

File-Indexing Problem mit pdftotext

Das File-Indexing des Medienpools scheint nur mit installiertem pdftotext auf dem Server zuverlässig zu funktionieren.

Für die Doku

Installation in diversen Linux-Distributionen
yum install poppler-utils

Installation unter Ubuntu / Debian
sudo apt-get install poppler-utils

Alternative? https://github.com/smalot/pdfparser

Feature: Fundstellen ausschließen

Gehört ja zusammen mit dem Filtern / Gewichten von Ergebnissen:

  • Artikel-ID oder durch Meta-Infos ausschließen (schon bei der Indexierung?)
  • Kategorien ausschließen (mit und ohne Unterartikel)
  • Medien-Kategorien ausschließen
  • Datenbank-Felder ausschließen (z.B. WHERE active = 0, etc.)

Diese Ideen sind mehr oder weniger aus dem Forum zu RexSearch zusammengefasst.

Darstellungsfehler Statistik

image

Am besten auf Zebralinien komplett verzichten, Fettdruck etc. nicht nötig.

Die Auswertung könnte man (irgendwannTM) grafisch aufbohren.

Automatische Indexierung nach ADD/EDIT/DELETE

Scheint nicht zu funktionieren. Habe gerade einen Text-Block in einen Artikel eingefügt und "Begriff" eingegeben, aber "Begriff" taucht in der Datenbank in _keywords erst nach einer neuen Indexierung auf.

Feature: Where-Klauseln für Datenbanktabellen

Bisher können Datenbank-Felder nicht eingeschränkt werden, sodass bei Datenbank-Suchen auch Einträge gefunden werden, die auf active=0,disabled=1,online=0 etc. stehen.

Diese können im Moment erst ausgefiltert werden, wenn die Suchergebnisse schon ausgegeben werden und auch nur dann, wenn das entsprechende Feld active/disabled/online indiziert wurde.

Panels verschieben?

Gehören diese Panels nicht eher zum Menü "Quelle"

  • Suchmodus - Indexierung
  • Suchergebnis - Wörter, Kategorien und Artikel von der Suche ausschließen

Fehlermeldung bei vollständigem Indexieren

Warning: Invalid argument supplied for foreach() in /.../redaxo/src/addons/search_it/lib/search_it.php on line 407

Hatte ich allerdings nur bei einem Webspace-Paket und kann es nicht rekonstruieren.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.