Verwenden der Volltextsuche in SQL Server 2008 für mehrere Tabellen und Spalten

Ich muss mit der Volltextsuche mehrere Spalten aus zwei Tabellen in meiner Datenbank durchsuchen. Bei den beiden fraglichen Tabellen sind die entsprechenden Spalten im Volltext indiziert.

Der Grund, warum ich mich für die Volltextsuche entscheide: 1. Leichtes Suchen von Wörtern mit Akzenten (Café) 2. Rang nach Wortnähe usw. 3. "Meinten Sie XXX?" Funktionalität

Hier ist ein dummy Tabellenstruktur, um die Herausforderung zu veranschaulichen:

Table Book
BookID
Name (Full-text indexed)
Notes (Full-text indexed)

Table Shelf
ShelfID
BookID

Table ShelfAuthor
AuthorID
ShelfID

Table Author
AuthorID
Name (Full-text indexed)

Ich muss nach Buchnamen, Buchnotizen und Autorennamen suchen.

ch kenne zwei Möglichkeiten, um dies zu erreiche

Verwenden einer volltextindizierten Ansicht: Dies wäre meine bevorzugte Methode gewesen, aber ich kann dies nicht tun, da eine Ansicht, um im Volltext indiziert zu werden, schemagebunden sein muss, keine äußeren Verknüpfungen und einen eindeutigen Index haben muss. Die Ansicht, die ich zum Abrufen meiner Daten benötige, erfüllt diese Einschränkungen nicht (sie enthält viele andere verknüpfte Tabellen, aus denen ich Daten abrufen muss).

Using tritt einer gespeicherten Prozedur bei: Das Problem bei diesem Ansatz ist, dass ich die Ergebnisse nach Rang sortieren muss. Wenn ich mehrere Joins über die Tabellen mache, durchsucht SQL Server standardmäßig nicht mehrere Felder. Ich kann zwei einzelne CONTAINS-Abfragen für die beiden verknüpften Tabellen kombinieren, kenne jedoch keine Möglichkeit, das @ zu extrahiere kombiniert rank aus den beiden Suchanfragen. Wenn ich beispielsweise nach "Arthur" suche, sollten die Ergebnisse sowohl der Buchabfrage als auch der Autorenabfrage berücksichtigt und entsprechend gewichtet werden.

Antworten auf die Frage(12)

Ihre Antwort auf die Frage