2016-06-20 4 views
1

Ich habe eine Reihe von Artikeln in einer Tabelle, die ich für Suchergebnisse abfragen möchte. Verwenden der Volltextsuche Ich kann eine Liste mit Elementen zurückgeben, bei denen sich die Suchschlüsselwörter "nahe" befinden.Mehrere Volltextsuche SQL Queries Zusammengeführt und bewertet (Ranked Search Results)

Volltextsuche scheint Thesaurus (FORMSOF) mit dem NEAR-Begrenzer nicht zu ermöglichen.

Was ich in SQL tun möchte, ist eine Abfrage oder eine Anzahl von Abfragen zu erstellen, die dieselben Daten auf verschiedene Arten durchsuchen und eine Punktzahl (oder RANK, wenn Volltextsuche verwendet wird) zurückgeben, dann möchte ich diese Ergebnisse zusammenführen, so dass es keine Duplikate gibt, und die Ränge/Scores zusammenfassen, so dass ich nach diesen Scores ORDERN kann.

Add in, ich würde auch eine separate Link-Tabelle von "Tags", die die Dokumente zugewiesen wurden suchen, und auch zusätzliche Punktzahl für diejenigen mit entsprechenden Tags zuweisen.

Wie können diese Anforderungen am besten erfüllt werden?

Antwort

0

Volltextsuche kann Suche wie ('"word*" near "another*"') in CONTAINSTABLE Anweisung. Das Sternchen wird helfen, irgendwelche Wörter zu suchen, die mit 'word' und 'another' nahe beieinander begonnen wurden, mit Ranking. Auf der anderen Seite können Sie FORMSOF(Thesaurus, word) AND FORMSOF(Thesaurus, another) Suche mit CONTAINSTABLE Anweisung starten.

Dann MERGE die Ergebnisse und verwenden ORDER BY, um nach beiden angegebenen RANKs zu sortieren.

+0

Danke für die Info. Ich war für eine Weile mit diesem fest, aber erkannte, dass ich spezifische Abfragen für die verschiedenen Suchergebnisse schreiben könnte, zum Beispiel eine Reihe von Ergebnissen für "Wort" in der Nähe von "anderen" und dann Forms (Thesaurus, Wort) durch die Durchführung verschachtelte Abfragen das sind UNION'd und dann gruppieren Sie sich nach den Resultaten und SUMMEN den gesamten RANK. Es ist vielleicht nicht die eleganteste Lösung, aber es ist skalierbar und funktioniert schnell. – TattooedGun

+0

Mein Vergnügen! Toll wenn es hilft und toll dass du eine Lösung findest! – gofr1