Vorgehensweise zum Hervorheben von Treffern von Ergebnissen aus einer SQL Server-Volltextabfrage

8

Wir haben eine Webanwendung, die SQL Server 2008 als Datenbank verwendet. Unsere Benutzer können Volltextsuchen für bestimmte Spalten in der Datenbank durchführen. Die Volltextfunktionalität von SQL Server scheint die Hervorhebung von Treffern nicht zu unterstützen. Müssen wir das selbst aufbauen oder gibt es vielleicht eine Bibliothek oder Wissen darüber, wie man das macht?

BTW die Anwendung ist in C # geschrieben, so eine. NET-Lösung wäre ideal, aber nicht notwendig, wie wir übersetzen könnten.

    
Phil Haselden 16.09.2008, 03:08
quelle

4 Antworten

3

Nach Ishmaels Idee ist es nicht die endgültige Lösung, aber ich denke, es ist ein guter Anfang.

Zunächst müssen wir die Liste der Wörter abrufen, die mit der Volltext-Engine abgerufen wurden:

%Vor%

Es gibt schon einiges, was man erweitern kann, zum Beispiel ist das Suchmuster ziemlich einfach; auch gibt es wahrscheinlich bessere Möglichkeiten, die Wörter herauszufiltern, die Sie nicht brauchen, aber es gibt Ihnen zumindest eine Liste von Stammwörtern usw., die mit der Volltextsuche übereinstimmen würden.

Nachdem Sie die Ergebnisse erhalten haben, die Sie benötigen, können Sie RegEx verwenden, um die Ergebnismenge zu analysieren (oder vorzugsweise nur eine Teilmenge, um sie zu beschleunigen, obwohl ich noch keine gute Lösung dafür gefunden habe). Dazu verwende ich einfach zwei while-Schleifen und eine Reihe von temporären Tabellen und Variablen:

%Vor%

Mehrere Anmerkungen:
1. Geschachtelte While-Schleifen sind wahrscheinlich nicht die effizienteste Art, dies zu tun, jedoch fällt mir sonst nichts ein. Wenn ich Cursor verwenden würde, wäre das im Grunde dasselbe 2. @FirstSearchWord hier bezieht sich auf die erste Instanz im Text eines der ursprünglichen Suchbegriffe, also wird der Text, den Sie ersetzen, nur in der Zusammenfassung enthalten sein. Auch hier handelt es sich um eine ziemlich einfache Methode, eine Art Algorithmus zum Finden von Textgruppen wäre wahrscheinlich nützlich 3. Um RegEx an erster Stelle zu erhalten, benötigen Sie benutzerdefinierte CLR-Funktionen.

    
Shagglez 26.07.2010, 19:07
quelle
3

Es sieht so aus, als könnten Sie die Ausgabe der neuen gespeicherten SQL Server 2008-Prozedur sys.dm_fts_parser analysieren und Regex verwenden, aber ich habe es nicht zu genau betrachtet.

    
Ishmael 06.03.2009 18:43
quelle
1

In dieser Instanz fehlt möglicherweise der Punkt der Datenbank. Ihre Aufgabe besteht darin, die Daten an Sie zurückzugeben, die die von Ihnen angegebenen Bedingungen erfüllen. Ich denke, Sie werden die Hervorhebung wahrscheinlich mit Regex in Ihrem Web-Steuerelement implementieren möchten.

Hier ist etwas, was eine schnelle Suche ergeben würde.

Ссылка

    
WIDBA 16.09.2008 17:40
quelle
1

Einige Details:

%Vor%

Funktionen

%Vor%     
xnagyg 24.09.2008 13:20
quelle