Effizientes Query System für Wortnachschlagewerk

Status
Nicht offen für weitere Antworten.

Chtonian

Mitglied
Guten Tag liebe Mitglieder des Java Forums,

komme ich direkt zu meinem Problem.
Ich habe eine Datenbank (MySQL) und ein JAVA Programm, welches Wörter aus einem gegebenen Text mit Wörtern aus der Datenbank vergleichen soll.

Die Texte sind beliebig lang, und es können beliebig oft neue Texte eingegeben / analysiert werden.

Der Standardweg, den ich bis jetzt eingeschlagen habe, ist, dass ich die Wörter des Textes einzeln per Query auf Vorhandensein innerhalb der Datenbank überprüfe, mittels eines einfachen "Select count(word) from Word where word = "${wort}""

Nun habe ich jedoch das problem, dass mit steigender Programmlaufdauer die Antwort / Queryzeiten des Systems immer langsamer werden, was wahrscheinlich am Cache der Datenbank liegt.

Leider kann ich diesen Cache nicht deaktivieren, da die anderen Systeme darauf angewiesen sind.

Gibt es eine effizientere Methode, schnellere Methode um 1. zu überprüfen, ob das wort bereits in der Datenbank ist, und wenn nein, es hinzuzufügen ? (dies verbietet automatisch die verwendung einer HashMap, da ich sicherstellen muss, dass concurrent laufende Threads immer die aktuelle Datenbasis zur verfügung haben)

Vielen Dank für eventuelle Antworten und eure Zeit

Chtonian
 

Chtonian

Mitglied
Lucene benutze ich bereits, um die texte in word token zu trennen, gibt es da eine möglichkeit die daten aus lucene zu speichern ?
 

Chtonian

Mitglied
Ich verdeutliche nochmal das, was ich eigentlich tun möchte.

Ich habe Texte, die nicht in einer Datenbank sind. Allerdings möchte ich die Wörter aus den Texten in eine Datenbank integrieren. D.h. ich erzeuge mit Lucene einen "Wort" - Token Strom, den ich dann mithilfe UIMA_AS mit Annotations versehe. Zusätzlich möchte ich eine Wort-Datenbank anlegen, in der sämtliche gefundenen Wörter aufgeführt werden. Ich möchte kein Wort doppelt haben, daher muss ich vorher überprüfen, ob das wort bereits in der Datenbank erfasst ist.

Dadurch habe ich immer 2 Arbeitsschritte:

1. Überprüfe das Vorhandensein des Wortes in der Datenbank
2. Wenn ja: Nimm dieses Wort aus der Datenbank, wenn Nein: Füge Wort der Datenbank hinzu.
 

homer65

Top Contributor
Wie wäre es dafür einen unique index anzulegen. Dann kann man sich die Abfrage sparen und direkt den insert machen.
 

Chtonian

Mitglied
hmm, du meinst, in java eine exception zu erwarten, und im falle einer exception das wort aus der datenbank laden (damit ich das entsprechende wort später zur verfügung habe, mit eventuellen feature daten aus der datenbank)

wäre eine idee. vielen dank erstmal dafür!
 

ice-breaker

Top Contributor
1. was ergibt folgendes (vor und nach dem uniquekey):
SQL:
explain select count(word) from Word where word = "${wort}"

2. einer von beiden folgenden SQL-Statements (wie genannt mit einem Unique-Key):
  • SQL:
    INSERT IGNORE INTO ...
  • SQL:
    INSERT INTO ... ON DUPLICATE KEY UPDATE ...
    (falls du bei jedem Wort noch einen Zähler hast, wie oft es genutzt wird)
 

Chtonian

Mitglied
Vielen Dank für die Antworten, jedoch ist das grundlegende Problem die Tatsache, dass wir nicht SQL direkt verwenden können, sondern über JPA unsere Datenbank ansprechen.
Dementsprechend sind solche Querys nicht möglich.

Aktuell habe ich es so umgesetzt, dass bei einem Persist des Wort Objektes direkt ein flush ausgeführt wird, der in einem Try Catch Block liegt.

Falls ein Fehler auftritt, so überprüfe ich, ob es ein ConstraintViolationFehler ist, und bearbeite im Businesslogik Tier die Exception stillschweigend als Hinweis darauf, dass das WOrt bereits in der Datenbank vorhanden ist.

Jedoch habe ich nun das problem, dass die Exception an den Server weitergeleitet wird, und auch dort entsprechend ausgegeben wird. Dies hat zur folge, dass wir nach kurzer zeit ein riesiges Logfile mit ansich unsinnigen Exceptions (Duplicate Key) vollgemüllt haben.
 

faulelotte

Mitglied
Wenn du schon Lucene einsetzt, solltest du Dir vielleicht einmal Compass ansehen. Ist unter
anderem dazu imstande Lucene Daten in eine Datenbank zu prügeln.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zrebna PostgreSQL-Query in eine MicrosoftSQL-Query konvertieren - chatGPT hilft nur bedingt. Datenbankprogrammierung 3
L JPA EclipseLink PostgreSQL auslesen mit Query Datenbankprogrammierung 2
T TRIM in Query Datenbankprogrammierung 3
D sql query in methode mit rückgabetyp Datenbankprogrammierung 14
OnDemand Mysql Query Builder Datenbankprogrammierung 1
P Herausfinden wann Query null zurück gibt? Datenbankprogrammierung 1
OnDemand SQL Query Optimierung Datenbankprogrammierung 28
Kirby.exe Verwirrung beim Query Datenbankprogrammierung 4
I Hibernate / JPA - Spaltenname von Query (Select) bekommen Datenbankprogrammierung 6
M Oracle Query umbauen (sind die Querys gleich?) Datenbankprogrammierung 5
B Frage bei einer SQL Query Datenbankprogrammierung 3
C Fehlerhafte SQL Query Datenbankprogrammierung 4
B MySQL Query (Anfängerfrage :D) Datenbankprogrammierung 3
B JPA / HQL Support bei Query - Distanzberechnung Datenbankprogrammierung 0
D JPQL- Query über mehrere Tabellen Datenbankprogrammierung 7
Thallius MySQL Was ist falsch an dem Query? Datenbankprogrammierung 2
Thallius MySQL Wo ist der Fehler in dem Query? Datenbankprogrammierung 2
OnDemand MySQL SQL Query Datenbankprogrammierung 2
X SQLite Erhalte bei Query INSERT INTO eine NullPointerException Datenbankprogrammierung 10
B Leerzeichen nach Umlaut -> Sichtbar erst nach Query! Datenbankprogrammierung 6
S sql query, um bestimten datensatz zu finden Datenbankprogrammierung 33
OnDemand SQL Query Anzahl der Werte Datenbankprogrammierung 8
H MySQL Anderer Query-Ansatz? Datenbankprogrammierung 4
P Tricky SQL Query Datenbankprogrammierung 3
P SQL Query Problem Datenbankprogrammierung 14
I Nullpointer bei einfacher Daba query Datenbankprogrammierung 12
I Query für Geburtstage Datenbankprogrammierung 6
S MYSQL: "Packet for query is too large" Datenbankprogrammierung 0
S HSQLDB PrepareStatement- Falsche query Datenbankprogrammierung 2
F Oracle The parameter name [...] in the query's selection criteria does not match any parameter name d Datenbankprogrammierung 2
J Fehler bei mySQL Query Datenbankprogrammierung 19
R MySQL berechnete Spalte im selben query weiterverwenden? Datenbankprogrammierung 4
S MySQL Hochkommata in Query Datenbankprogrammierung 7
M Problem beim Erstellen einer Query Datenbankprogrammierung 7
D SQL Update auf eine Query möglich? Datenbankprogrammierung 4
T HQL Query funktioniert nicht? Datenbankprogrammierung 8
M PostgreSQL Hibernate Query Restriction Datenbankprogrammierung 2
N Query für Derby DB mit Enterbrise Bean Datenbankprogrammierung 4
algebraiker Eclipse RCP - no persistent classes found for query class Datenbankprogrammierung 4
M List aus Hibernate Query Datenbankprogrammierung 5
M JPA-Query - nicht das komplette Objekt Datenbankprogrammierung 4
M Problem mit Hibernate und Named Query Datenbankprogrammierung 1
S DB2 Eclipselink Query Datenbankprogrammierung 2
LadyMilka Ergebnistyp HQL-Query Datenbankprogrammierung 3
M Frage zu folgender Query in EJB-QL Datenbankprogrammierung 4
Eldorado MySQL HQL Query Tag von Date Datenbankprogrammierung 6
H DB auslesen (Hibernate, Query, Parameter) Datenbankprogrammierung 8
C Split String für SQl query Datenbankprogrammierung 10
C setSelectedValue in SQL Query übergeben Datenbankprogrammierung 20
D Hibernate: Query verarbeiten Datenbankprogrammierung 11
B Hibernate, einfaches Query Ausgeben Datenbankprogrammierung 4
X Select Query auf Substring Datenbankprogrammierung 2
L Query grafisch erzeugen Datenbankprogrammierung 6
N SQL Query Browser Error Datenbankprogrammierung 6
B Suche Query um genau einen Wert einer def. Gruppe aus einer Tabelle zu erhalten. Datenbankprogrammierung 2
D Hibernate, Criteria Query Datenbankprogrammierung 2
T JPQL Query für eine Tabellenansicht Datenbankprogrammierung 2
G JPQL L*KE / JPA Query Language Datenbankprogrammierung 9
O SQL-Query bringt Fehler Datenbankprogrammierung 4
D kurze Frage zu einem Query Datenbankprogrammierung 6
S Query aus Querys Datenbankprogrammierung 14
P [Hibernate] Criterion-Query in HQL übersetzen Datenbankprogrammierung 10
D Neuer Query wird nicht erkannt Datenbankprogrammierung 10
E Wie koennte die SQL Query aussehen? Datenbankprogrammierung 13
B mysql query ausführen Datenbankprogrammierung 4
N Fehler beim matchen von Strings via Query Datenbankprogrammierung 2
G How to put SQL query result into a file Datenbankprogrammierung 3
B Ein Query mit Mysql erzeugen Datenbankprogrammierung 6
G Hilfe bei Query für Spaltenansicht. Datenbankprogrammierung 20
A Fehler bei query Datenbankprogrammierung 7
G SQL-Query Methode Datenbankprogrammierung 4
H suche eine Login system Bibliothek für Java Datenbankprogrammierung 5
H MySQL Benutzer Login System mit Datenbank Informationen (Abfrage zu User ist auf DB gesichert) Datenbankprogrammierung 42
D Login System Datenbankprogrammierung 2
I Belastet es das System zu sehr einen Timer jede 0.2 Sekunden eine DB Abfrage machen zu lassen? Datenbankprogrammierung 9
D Welches System brauche ich? Datenbankprogrammierung 6
D An Access Datenbank andocken ohne sie beim System anzumelden Datenbankprogrammierung 3
P Geeignetes DB-System Datenbankprogrammierung 8
L System.currentTimeMillis() in AccessDB!? Datenbankprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben