Ich arbeite an einem Projekt mit SQL Server 2008, bei dem ich glaube, dass die Volltextsuche der beste Weg ist. Ich habe so viel wie möglich darüber gelesen und verstehe im Großen und Ganzen, wie man es für eine einzelne Tabelle einrichtet. Allerdings bin ich mir nicht ganz sicher, wie ich es mit meinem Szenario einrichte - stell dir die folgende Tabellenstruktur vor:
Buch
- Id
- Titel
- Beschreibung
BuchAutor
- BuchId
- AutorId
Autor
- Id
- Name
Wie du sehen kannst, enthält die Datenbank eine Tabelle mit Büchern, und jedes Buch kann keinen, einen oder mehrere Autoren haben. Jeder Autor kann auch keinen, einen oder mehrere Bücher haben - d.h. die Tabellen Buch
und Autor
haben eine Many-to-Many-Beziehung, die mit der Verknüpfungstabelle BuchAutor
behandelt wird.
Was ich zu diesem Zeitpunkt erreichen möchte, ist ein Suchwerkzeug, um Bücher zu finden, die auf einen Suchbegriff basieren, den der Benutzer angibt. Wenn der Benutzer z.B. Brown
eingibt, möchte ich alle Bücher finden, bei denen eine der folgenden Spalten das Wort Brown
enthält:
Buch.Titel
Buch.Beschreibung
Autor.Name
Im Wesentlichen möchte ich eine Ergebnismenge von Büchern, einschließlich des Buches mit dem Titel Brown Bear
und der Bücher, die von Autor Dan Brown
geschrieben wurden. Wenn es irgendwelche Vorschläge gibt, wie ich dies einrichten sollte, wäre ich wirklich dankbar für Ihren Beitrag!
(als Nebenbemerkung, sobald ich dieses Filtern zum Laufen gebracht habe, müsste das Abfrageergebnis auch sortierbar und in Seiten unterteilt sein, die über @SortOrder
, @PageIndex
und @PageSize
an eine gespeicherte Prozedur übergeben werden - aber ich denke, das könnte eine separate Frage sein!)
0 Stimmen
Warum nehmen Sie an, dass die Volltextsuche hier eine angemessene Lösung ist? Das sieht für mich völlig wie ein normaler Datenbank-Design aus.
0 Stimmen
Möglicher Duplikat von Verwendung der Volltextsuche in SQL Server 2008 über mehrere Tabellen, Spalten
0 Stimmen
@TomTom Die Suche nach "Brown" wie oben ist nur ein vereinfachtes Beispiel dessen, was ich erreichen möchte. Ich muss in der Lage sein, nach x Anzahl von Wörtern zu suchen, und mit LIKE wird das nicht funktionieren. Außerdem möchten wir in Zukunft in der Lage sein, Zeilen zu finden, die fast übereinstimmen, und dafür wird eine Volltextsuche benötigt (soweit ich weiß).
0 Stimmen
@AdrianIftode Ja, ich habe mir das angesehen, und ich entschuldige mich, wenn dies als Duplikat betrachtet wird. Wie jedoch in der zweiten Antwort dort angegeben wird, habe ich festgestellt, dass die akzeptierte Antwort das Problem nicht löst. Der andere Vorschlag im Thread, eine zusätzliche Spalte in der Buchtabelle mit allen durchsuchbaren Daten zu erstellen, würde wahrscheinlich funktionieren, aber umständlich und denormalisiert sein, daher war ich neugierig, ob jemand andere Vorschläge hat.
0 Stimmen
@Iskariot leider kann ich die geschlossene Abstimmung nicht rückgängig machen. Ich wusste nichts über die Ansichten, sieht vielversprechend aus.