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 Introduction

REDAXO 5 AddOn Search it

Search it ist ein REDAXO 5-AddOn für eine Volltextsuche im Frontend.

Dabei werden Artikel, Medien, Dateien, PDF-Inhalte und Datenbank-Felder in einer DB-Tabelle des AddOns gespeichert und ausgewertet. Suchanfragen können außerdem in einer Cache-Tabelle gespeichert werden. Das spart Serverrechenleistung und führt zur schnelleren Anzeige von Suchergebnissen.

Systemvoraussetzungen

  • PHP >= 7.0
  • REDAXO >= 5.5
  • pdftotext für das Durchsuchen von pdf-Inhalten, optional.

Plugins

  • Statistik: Liefert Informationen zur Search it-Datenbank und zu den häufigsten Suchanfragen.
  • Dokumentation: Zeigt diese Dokumentation an.
  • Plaintext: Erlaubt es zu bestimmen, was in den Index aufgenommen wird

Hinweis: Die Plugins Reindex und Search Highlighter aus RexSearch für REDAXO 4 wurden in Seach it integriert.

Wo finde ich weitere Hilfe?

Search it verfügt über ein umfangreiches Dokumentations-Plugin im Backend, das auch Beispiel Module für die Suche enthält. Fragen können auch im REDAXO-Channel auf Slack gestellt werden.

Installation

Die Installation erfolgt über den REDAXO-Installer, alternativ gibt es die aktuellste Beta-Version auf GitHub.

Bei der Installation werden fünf Datenbanktabellen angelegt:

  • rex_tmp_search_it_index für die Indexierung von Artikeln und DB-Spalten
  • rex_tmp_search_it_keywords für die Ähnlichkeitssuche
  • rex_tmp_search_it_cache und rex_tmp_search_it_cacheindex_ids für den Suchcache
  • rex_tmp_search_it_stats_searchterms für die Statistik

Die Tabellen werden nicht in die Datenbank-Sicherung des backup-Addons miteinbezogen.

First Steps

Nach der Installation sollten zunächst die Einstellungen vorgenommen werden und anschließend der Index vollständig generiert werden.

Lizenz

MIT Lizenz

Autor

Friends Of REDAXO http://www.redaxo.org https://github.com/FriendsOfREDAXO

Projekt-Lead Norbert Micheel

Credits

Search it basiert auf: RexSearch (Xong) für REDAXO 4 Norbert Micheel Portierung für R5 und aktiven Entwicklung Alexander Walther Dokumentation und Hilfe Tobias Krais URL Addon (>= 2.0) Support und weitere Entwickler...

search_it's People

Contributors

191977 avatar aeberhard avatar alxndr-w avatar danielweitenauer avatar danspringer avatar davidbruchmann avatar elricco avatar gharlan avatar imgbot[bot] avatar interweave-media avatar lexplatt avatar nandes2062 avatar pschuchmann avatar rkemmere avatar schuer avatar skerbis avatar staabm avatar thielpeter avatar tobiaskrais avatar tyrant88 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

search_it's Issues

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.

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?

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

Panels verschieben?

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

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

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.

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

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.

Notice

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

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)

Doku: First Steps

Erläuterungen zu

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

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.

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

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

Ä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.

Darstellungsfehler Dateisuche

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

image

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.

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.

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.

Darstellungsfehler Statistik

image

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

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

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()

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/

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

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.)

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.