Library für Textsuche (z. B. include/exclude, and/or)?

webracer999

Mitglied
Ich habe eine JavaFX-Anwendung mit einem TableView. Der Anwender kann die angezeigten Zeilen über eine Sucheingabe (TextField) filtern.

Bisher gehe ich über alle Zellen und verwende einfach String.contains().
Ich würde das nun gerne erweitern, dass z. B. auch sowas wie "hello OR hallo -world columnB:abc". eingegeben werden kann.
-> include oder exclude ("-world"), AND-/OR-Verknüpfungen, Suche in bestimmten Spalten ("columnB:abc") etc.

Kennt hier jemand eine bestehende Bibliothek für diesen Anwendungsfall?
Ich habe bereits im Internet recherchiert, aber nichts gefunden. Apache Lucene, Apache Solr, Elasticsearch gehen für den Anwendungsfall zu weit, soweit ich das bisher verstanden habe. Meine Daten sind ja sehr strukturiert (eben in Tabellenform) und kein Volltext.
 

mihe7

Top Contributor
Eine Lib kenne ich nicht, aber so etwas lässt sich mit durchaus vertretbarem Aufwand selbst schreiben. Der Hauptaufwand besteht darin, die formale Sprache zu spezifizieren, die in der Suche verwendet wird.
 

webracer999

Mitglied
Nachdem ich das Programm nur selber nutze, kann ich es in der Tat relativ simpel halten. Mir persönlich reicht erst mal ein Ausschluss ("-world") und die Suche in Spalten ("columnB:abc"). Das lässt sich wirklich noch relativ leicht implementieren.

Wo es schon anspruchsvoller wird, wenn man mit Wortketten arbeitet (z. B. "hallo welt") oder mit Klammern für AND/OR.
Ich hab mal einen einfachen Rechnungsformel-Löser erstellt, der Strings wie "-23 * 3 (21 - 3 + 4)" lösen konnte. Würde in dem Fall wohl in eine ähnliche Richtung gehen. Also erst die Tokens ermitteln, daraus einen Ablaufbaum erstellen und diesen dann lösen.

Bin jetzt noch auf Parsergeneratoren gestoßen, z. B. ANTLR (https://www.antlr.org/). Werd ich mir mal anschauen, ob da die Einarbeitung die Mühe wert ist. :)
 

mihe7

Top Contributor
Ja, ANTLR ist natürlich eine Möglichkeit, um einen Syntaxbaum zu erzeugen, das ist aber auch nur ein Werkzeug, das Dir die Definition der Sprache zwar vereinfacht aber nicht abnimmt.

Soweit ich das sehe, hast Du nur ein paar Lexeme: Identifier, String, den Doppelpunkt als Operator für den Spaltenzugriff, ansonsten "and", "or" und das "-" für "not", Klammern könnte man noch hinzufügen.

Ob Du dafür ANTLR bemühen möchtest, musst Du selbst wissen.
 

webracer999

Mitglied
In der Definition der Sprache sehe ich keine allzu große Herausforderung. Da gibt es genügend Praxisbeispiel und praktisch Best Practices.

Und ja, den Syntaxbaum kann man auch selbst erstellen oder eben einen Parsergenerator verwenden.
Für mich war damals bei dem Rechnungsformel-Löser die große Erkenntnis, dass man das am besten in zwei großen Schritten macht: erst mal die Tokens ermitteln und daraus den Ablaufbaum erstellen und diesen dann im zweiten Schritt lösen.

Ich war ja ursprünglich auf der Suche nach einer fertigen Library. Aber ich glaub, obwohl eine Suchfunktion ja oft benötigt wird, ist es doch recht anwendungsspezifisch und man muss sich das wohl selbst bauen.
 

mihe7

Top Contributor
Das denke ich auch, zumal es ja dann darauf ankommt, den Syntaxtree zu verarbeiten. Vermutlich baust Du den Syntaxtree in einen Objektbaum um, der sich dann um die "Ausführung" kümmert und dürfte dann auch der Punkt sein, der dann doch sehr spezifisch wird (JDBC/JPA bzw. SQL/SQL-Dialekte/JPQL, ...)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I OCR Library für Belegerkennung Allgemeine Java-Themen 7
H Interface PluginSystem ClassNotFound exception für library Klassen Allgemeine Java-Themen 10
M Best Practices Exception Handling für eigene library Allgemeine Java-Themen 8
I Library für High Performance Mime Type Erkennung Allgemeine Java-Themen 8
G Library für CNC Programme Allgemeine Java-Themen 2
F Java Library für Videobearbeitung, edit, cut, encode. Allgemeine Java-Themen 6
D Hat Java eine Library um JavaScript auszuwerten? Allgemeine Java-Themen 2
F Problem mit PDFBOX Library Allgemeine Java-Themen 1
D Open Source Library zum erstellen von PDFs Allgemeine Java-Themen 1
P9cman java.Lang Klassen fehlen in JRE System Library Allgemeine Java-Themen 1
F Kennt ihr eine Library um 2 HTML Seiten zu diffen? Allgemeine Java-Themen 8
O Arrays an DOCX-Stamper Library übergeben Allgemeine Java-Themen 1
TheWhiteShadow 2D-Grafik GIF Library mit byte output Allgemeine Java-Themen 10
J Probleme beim einbinden von Zip4j library Allgemeine Java-Themen 6
B Maven Keycloak library wirft exceptions nach maven package Allgemeine Java-Themen 1
A Classpath Library in verschiedenen Projekten Allgemeine Java-Themen 2
O Standard library nativer C code Allgemeine Java-Themen 1
B OCR Library gesucht Allgemeine Java-Themen 6
S Anwendung die alle Abhaengigkeiten einer Library listet..? Allgemeine Java-Themen 5
Tausendsassa Kabeja Library Allgemeine Java-Themen 9
4a61766120617274697374 PDF library Allgemeine Java-Themen 5
D Library/Framework zum Umwandeln von Sound in Notenbilder Allgemeine Java-Themen 1
S Classpath Wie kann ich Java-Library Klassen "verstecken"..? Allgemeine Java-Themen 4
J Lanterna Library Allgemeine Java-Themen 2
A Linux: Native Library mit Rootrechten ohne Prozess mit sudo zu starten Allgemeine Java-Themen 1
F Java Native/Shared Library (.so) laden macht Probleme Allgemeine Java-Themen 3
F rxtx library mit virtuellem Comport Allgemeine Java-Themen 2
chuxXo JAVA MP3 Library Allgemeine Java-Themen 11
F Frage zur Library JTS Allgemeine Java-Themen 5
M Interface einer Library implementieren Allgemeine Java-Themen 3
reibi JNA - Native Acess - Library Path Allgemeine Java-Themen 2
G USB Library Allgemeine Java-Themen 1
B Load Library and use JNA to access Allgemeine Java-Themen 3
G Native Library / Fehler beim Laden der .so/.dll Datei Allgemeine Java-Themen 17
S Library fuer Internet-Text-Daten-Quellen..? Allgemeine Java-Themen 8
B IRC-Library Gesucht Allgemeine Java-Themen 2
N DTAU Library Allgemeine Java-Themen 2
H java.library.path mit einer Batch-Datei einstellen Allgemeine Java-Themen 3
G RXTX native library unter Linux in jar build angeben Allgemeine Java-Themen 4
B NetBeans Library nicht gefunden Allgemeine Java-Themen 6
T Einbinden einer Library in NetBeans Allgemeine Java-Themen 3
S RXTX library in Jar einbinden Allgemeine Java-Themen 5
R JNI load so-library Allgemeine Java-Themen 4
ruutaiokwu META-INF-daten bei ungepackten library-projekten während der entwicklung mit einbeziehen...? Allgemeine Java-Themen 2
C Jni Library/dll erstellen Allgemeine Java-Themen 4
G Suche "richtiges" Framework/Library Allgemeine Java-Themen 14
T Mathematik Parser Library? Allgemeine Java-Themen 4
P jar <-> Library Allgemeine Java-Themen 2
nrg Externe Library Lizenzen Allgemeine Java-Themen 14
D plattformabhängige library ausblenden Allgemeine Java-Themen 4
S 3D Grafik Library? Allgemeine Java-Themen 5
Lufti Unterschied zwischen Djava.library.path und Class-Path im Manifest? Allgemeine Java-Themen 2
N Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl in java.library.p Allgemeine Java-Themen 4
P SUCHE: gute Geo Library (freeware) Allgemeine Java-Themen 2
P Suche performante PDF Library Allgemeine Java-Themen 20
S suche library die diagramme darstellen kann Allgemeine Java-Themen 2
G RXTX library braucht sehr lange zum laden. Ist das normal? Allgemeine Java-Themen 8
A Strings joinen, Standard-Library? Allgemeine Java-Themen 9
P MP3-Player Library: MP3 abspielen und ID-Tags auslesen Allgemeine Java-Themen 12
D PDF library Allgemeine Java-Themen 6
J ICQ Library Allgemeine Java-Themen 6
T Native Library ausliefern Allgemeine Java-Themen 12
C Speicherlecks in externer Library Allgemeine Java-Themen 2
A java.library.path festlegen. Allgemeine Java-Themen 5
J Native Library einbinden Allgemeine Java-Themen 17
G C++ Library in Java einbinden Allgemeine Java-Themen 4
C ICQ Library Allgemeine Java-Themen 3
M JNI, static.a mit load.Library laden? Allgemeine Java-Themen 2
T Disk Image Library (iso,mdf,nrg,bin) Allgemeine Java-Themen 6
cowabunga1984 Library um TIF in PDF zu konvertieren Allgemeine Java-Themen 2
foobar java.library.path Property setzen Allgemeine Java-Themen 5
F POI Library - Graphic in Excel inserten möglich? Allgemeine Java-Themen 2
B Algorithmus für Arbeit mit fehlenden Listenelementen? Allgemeine Java-Themen 1
kodela Eingabe für TextArray bedingt sperren Allgemeine Java-Themen 3
Karl_Der_Nette_Anfänger Hat wer ne Lösung für verknüpfte Postleitzahlen? (Baum/Wurzel Struktur) Allgemeine Java-Themen 11
R 11 GB File lesen ohne zu extrahieren Filedaten Bereich für Bereich adressieren dann mit Multi-Thread id die DB importieren Allgemeine Java-Themen 3
G KeyListener für JTextField Allgemeine Java-Themen 5
I Module-Info für Jar erzeugen Allgemeine Java-Themen 7
krgewb Java-Bibliothek für ONVIF Allgemeine Java-Themen 1
B Simpler Eventlistener für Tastaturtaste bauen? Allgemeine Java-Themen 13
_user_q Eingegebenen Text Zeile für Zeile ausgeben lassen Allgemeine Java-Themen 11
E Key für TOTP Algorythmus(Google Authentificator) Allgemeine Java-Themen 0
S Formel für Sonnenwinkel in ein Programm überführen Allgemeine Java-Themen 11
M pfx-Zertifikat in Tomcat für SSL-Verschlüsselung nutzen Allgemeine Java-Themen 14
R Best Practice Erfahrungswerte für eine Migration von JSF nach Angular (oder anderes JS-Framework) Allgemeine Java-Themen 1
B HeapSort für Array of Strings funktioniert nur teilweise Allgemeine Java-Themen 3
jhCDtGVjcZGcfzug Klassen Was genau passiert hier? Kann mir das jemand bitte Zeile für Zeile erklären? Allgemeine Java-Themen 1
rosima26 Bester Sortieralgorithmus für kurze Arrays Allgemeine Java-Themen 40
S Mit Methoden kann man definieren für was <T> steht. Geht das auch irgendwie für Variablen? Allgemeine Java-Themen 12
MangoTango Operatoren while-Schleife für Potenz Allgemeine Java-Themen 3
B Lottospiel, genug Reihen tippen für 3 Richtige (Spaß mit Arrays)? Allgemeine Java-Themen 46
B Mit welchen Datentypen und Strukturierung am Besten dutzende Baccaratspiele Shcritt für Schritt durchsimulieren? Allgemeine Java-Themen 26
D Klassendesign für einen Pascal Interpreter Allgemeine Java-Themen 6
farah GetterMathod für Farbkanäle Allgemeine Java-Themen 6
B Welcher Datentyp für sehr große Zahlenbereiche? Allgemeine Java-Themen 1
S Webservices für binäre Daten? Allgemeine Java-Themen 5
G Licence-Header für InHouse entwickelten Source Allgemeine Java-Themen 8
M Schleife für einen TicTacToe Computer Allgemeine Java-Themen 5
O git ignore für Intellji braucht es die .idea Dateien? Allgemeine Java-Themen 8
F Java Script für das Vorhaben das richtige? Allgemeine Java-Themen 9

Ähnliche Java Themen

Neue Themen


Oben