![]() |
Datenbank: Firebird • Version: 1.5 • Zugriff über: IBX/FIBPlus
Indexierung meiner DB
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? |
Re: Indexierung meiner DB
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? |
Re: Indexierung meiner DB
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 |
Re: Indexierung meiner DB
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. |
Re: Indexierung meiner DB
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.
|
Re: Indexierung meiner DB
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 |
Re: Indexierung meiner DB
Zitat:
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? |
Re: Indexierung meiner DB
Zitat:
was bedeutet lernfähig? (mir geht hier leider noch etwas hintergrundwissen ab) ich gehe von folgender arbeitsweise aus
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 ....) |
Re: Indexierung meiner DB
Zitat:
Dann Ansatz stimmt ansonsten. Ich würde noch eine Negativliste führen (Wörter die nicht betrachtet werden, z.B. der, die, das, und, ...) |
Re: Indexierung meiner DB
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz