AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Indexierung meiner DB
Thema durchsuchen
Ansicht
Themen-Optionen

Indexierung meiner DB

Ein Thema von Gruber_Hans_12345 · begonnen am 29. Jan 2007 · letzter Beitrag vom 29. Jan 2007
Antwort Antwort
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#1

Indexierung meiner DB

  Alt 29. Jan 2007, 11:03
Datenbank: Firebird • Version: 1.5 • Zugriff über: IBX/FIBPlus
Hallo

Ich spiele mit dem Gedanken, in meiner Datenbank, eine suche zu integrieren, die per Index funktioniert.

Also alle Objekte der DB, in denen gesucht werden soll, werden einmal in einen Index geladen, und dort kann dann schnell gesucht werden, ohne einzeln die zig tabellen abzugrasen ....

wie baue ich am besten die tabelle auf, die den index dann enthalten soll?
bekommt man wo schon vernünftige algorithmen her, die zb eine reine Textdatei indexieren?

gibt es wo gute und brauchbare dokumentation dazu (index und suche findet man zwar viel per google und co, aber was brauchbares? )
oder gibt es vernünftige Komponenten für Delphi?
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Indexierung meiner DB

  Alt 29. Jan 2007, 11:08
Also Indeices kann die Datenbank von allein, wenn man die Felder derart deklariert. Was du meinst ist wohl ein Volltextindex.
Um wieviele Datensätze Reden wir?
Markus Kinzler
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Indexierung meiner DB

  Alt 29. Jan 2007, 11:20
ja, meinen einen volltextindex
und auch so, das ich im endeffekt nur in einer tabelle suchen muß um rauszubekommen, welche objekte angezeigt werden sollen.

10 Tabellen mit 10000 Datensätzen
10 Tabellen mit 5000 Datensätzen
1 Tabelle mit 200000 Datensätzen
2 Tabellen mit 1000 Datensätzen
2 Tabellen mit 2000 Datensätzen
1 Tabelle mit 50000 Datensätzen

sind mal die wichtigsten .... der rest ist dann noch etwas kleinkram
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Indexierung meiner DB

  Alt 29. Jan 2007, 11:35
Da würde ich mal Testen ob ein extra Index sich lohnt (sind ja je nach implementierung auch mehrere Tabellen).
Ich würde das in einer SP lösen, welche dann sämtliche Tabellen durchsucht.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von MagicAndre1981
MagicAndre1981

Registriert seit: 4. Jun 2004
Ort: Nordhausen
2.214 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Indexierung meiner DB

  Alt 29. Jan 2007, 11:42
Ein Index macht bei Suchen nach Strings oder Memos Sinn, aber du musst bedenken, dass ein Index beim Lesen vorteile bringt, aber dass es beim Schreiben etwas länger dauert.
André
"A programmer is just a tool which converts caffeine into code", daran wirds wohl liegen, dass ich Abends nie pennen kann

Zitat von Luckie:
Nicht nur dass ihr offtopic geworden seid, jetzt werdet ihr selber im Offtopic noch offtopic
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Indexierung meiner DB

  Alt 29. Jan 2007, 11:43
das ist leider auch nicht ganz so einfach ... wie bringe ich dem FB1.5 (oder 2.0 egal dann) bei wie er RTF Dokumente und sonstige eigene Dokumente indizieren soll?

Wenn ich selber indiziere ist es ja dann kein problem meine eigenen Objekte zu indizieren.

Das nächste ist dann, bei der Tabelle mit 50000 datensätzen handelt es sich um externe Files, also, da wird nur der Filelink in der DB gespeichert, und die daten selbst werden dann in einem zentralen FileStorage gespeichert.

@MagicAndre
das ist mir klar, würde ja dann nur in zeitintervallen neu indizieren (so jede stunde oder so) jedes objekt in der db hat ja ein Änderungsdatum dabei, anhand dessen erkenne ich dann ja ob sich was geändert hat oder nicht
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Indexierung meiner DB

  Alt 29. Jan 2007, 11:47
Zitat:
as ist leider auch nicht ganz so einfach ... wie bringe ich dem FB1.5 (oder 2.0 egal dann) bei wie er RTF Dokumente und sonstige eigene Dokumente indizieren soll?
Ja, das ist ja was anderes.
Ich habe hier ein interne Anwendung (webbasiert), bei der die Dokumente sich in der Datenbank befinden, dort geht die Suche auch ohne speziellen Index, recht schnell.
Soll der Index lernfähig sein?
Markus Kinzler
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Indexierung meiner DB

  Alt 29. Jan 2007, 12:07
Zitat von mkinzler:
Zitat:
as ist leider auch nicht ganz so einfach ... wie bringe ich dem FB1.5 (oder 2.0 egal dann) bei wie er RTF Dokumente und sonstige eigene Dokumente indizieren soll?
Ja, das ist ja was anderes.
Ich habe hier ein interne Anwendung (webbasiert), bei der die Dokumente sich in der Datenbank befinden, dort geht die Suche auch ohne speziellen Index, recht schnell.
Soll der Index lernfähig sein?
lernfähig? ja natürlich hört sich gut an

was bedeutet lernfähig? (mir geht hier leider noch etwas hintergrundwissen ab)

ich gehe von folgender arbeitsweise aus
  • Indizieren einer Datei
    • Die Datei wird wort für wort durchgegangen (pro Dateiendung gibt es unterschiedliche Trennzeichen)
    • ungünstige wörter werden gleich gelöscht (wörter < 2 zeichen) wörter mit nur Sonderzeichen oder nur zahlen
    • das ganze wird in Tabellen gespeichert (einmal die Wörter und dann die Verlinkung)
    • eventuell noch in der Linktabelle gespeichert, wie oft das Wort vorkommt?
  • suchen
    • gesucht wird in der INDEX_WORD Tabelle was dort gefunden wird, wird anschließen in der INDEX_INDEX Tabelle gesucht

SQL-Code:
INDEX_WORD (
  ID INTEGER NOT NULL,
  WORD VARCHAR(20) // Hier nen Index drauf
)
SQL-Code:
INDEX_INDEX (
  WORD_ID INTEGER NOT NULL, // Verknüpfung zur INDEX_WORD Tabelle
  OBJEKT_TYP INTEGER, // Welche Tabelle das ist
  OBJEKT_ID INTEGER, // eindeutiger Index des Datensatzes in der Tabelle
  STATUS INTEGER, // eventuell ein Status, wo das Wort vorgekommen ist (Kommentar oder Text oder ....)
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Indexierung meiner DB

  Alt 29. Jan 2007, 12:15
Zitat:
was bedeutet lernfähig? (mir geht hier leider noch etwas hintergrundwissen ab)
Draunter meine ich, das die Wortliste dynamisch erzeugt wird.
Dann Ansatz stimmt ansonsten. Ich würde noch eine Negativliste führen (Wörter die nicht betrachtet werden, z.B. der, die, das, und, ...)
Markus Kinzler
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Indexierung meiner DB

  Alt 29. Jan 2007, 13:07
ok, das mit der negativliste ist ne gute idee.

gibt es irgendwo codeschnippel oder komponenten, die einem einen teil der arbeit abnehmen? (oder muß man das rad in diesem fall neu erfinden?)
oder weiterführende dokumentation, damit man nicht irgendwelche grundlegende fehler macht
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz