![]() |
Datenbank: Firebird • Version: 7 • Zugriff über: Zeos
Volltextsuche in Blob möglichst schnell
Hallo!
Ich habe eine Tabelle mit einigen Datensätzen (sagen wir einmal 100) in der jeweils in einem Blob (sub_type 1) ein langer Text gespeichert wird. Jetzt möchte ich möglichst schnell in diesem Blob nach verschiedenen Begriffen suchen und die Anzahl der unterschiedlichen Begriffe die in dem Text vorkommen zurückgeben. Im Grunde gesehen sollte das doch genau das sein, was in der Suche eines Forums gemacht wird. Wie wird das dort umgesetzt? Oder: was könnt ihr mir hier empfehlen? Vielen Dank schon einmal für eure Hilfe! Gruß Teekeks |
AW: Volltextsuche in Blob möglichst schnell
Das Problem ist, dass Blobs nicht indiziert werden. Beim Durchsuchen wird jeder Datensatz angefasst.
Btw. 100 Datensätze sind ja nicht viel |
AW: Volltextsuche in Blob möglichst schnell
Warum speicherst du den Text in einem Blob und nicht in einem Text-Feld?
|
AW: Volltextsuche in Blob möglichst schnell
Wenn Du nach mittelständigen Begriffen suchst ist das ein SQL-Like-statement z.B.: 'Like %Begriff%'. Schneller wird das wenn Du dies, wie s.h.a.r.k. anmerkt, in ein Textfeld wandelst. Indizieren dürfte nicht viel bis nichts bringen.
|
AW: Volltextsuche in Blob möglichst schnell
Man müsste einen Fulltextindex implementieren. Technisch sollte keine Unterschied zwischen einem langen VARCHAR-Feld und einem Textblob bestehen.
![]() |
AW: Volltextsuche in Blob möglichst schnell
Doch, es gibt einen Unterschied: Ich kann keinen Varchar mit z.B. 10000 Zeichen anlegen! Wenn ich dies Versuche, bekomme ich folgende Nachricht:
Zitat:
Dabei herrausgekommen ist folgendes:
Code:
Kann ich dass jetzt für eine Nummer auch auf mehrere Begriffe ausweiten? Also das ich nicht nur nach "Fenchel" suche sondern auch z.B. nach "Banane"?
SELECT Count(*) FROM PE_REZEPTE a WHERE a.Text like '%Fenchel%' and a.nummer=2
Weil jetzt wird ja nur zurück gegeben ob der eine Begriff da ist oder nicht, wobei sich Count ja momentan auf die anzahl der zurückgegebenen Datensätze (also ja Maximal 1 wegen dem eindeutigen Feld Nummer) bezieht. Liege ich da jetzt mit meinen Gedankenwegen auf dem richtigen Weg oder soll ich doch anders vorgehen? Danke schon einmal für eure Hilfe bis hierhin! |
AW: Volltextsuche in Blob möglichst schnell
Eigentlich sollte die Beschränkung bei 32768 sein. Ab Firebird 2.1 werden Textblobs unterhalb dieser Grenze sowieso wie ein VARCHAR-Feld behandelt.
|
AW: Volltextsuche in Blob möglichst schnell
Hmmm gut. Wir haben schon mal Firebird 2.1 am laufen.
Zeichensatz ist UTF8. Wie viele sind den dort maximal möglich? Laut einem Text von 2006 ist da maximal etwa 10000 Zeichen möglich, aber auch schon 4000 schlagen ja fehl. |
AW: Volltextsuche in Blob möglichst schnell
Die Begrenzung ist wie gesagt 32765. Bei Firebird >=2.5 wird dann auch ein Textblob der kürzer ist wie ein VARCHAR-Feld behandelt
Zitat:
|
AW: Volltextsuche in Blob möglichst schnell
Woran liegt es dann aber das ich bei diesem SQL-Befehl:
Code:
Diese Fehlermeldung bekomme?
ALTER TABLE PE_REZEPTE ADD
test Varchar(10000); Zitat:
Irgendeinen Grund muss das doch haben dass es normalerweise geht, aber hier nicht. :gruebel: Gruß Teekeks |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:27 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