Frage

Ich bin mit einem FullTextSqlQuery in Sharepoint 2007 (MOSS) und muß die Ergebnisse von zwei Spalten bestellen:

SELECT WorkId FROM SCOPE() ORDER BY Author ASC, Rank DESC

Allerdings scheint es, dass nur die erste Spalte von ORDER BY berücksichtigt wird, wenn die Ergebnisse zurück. In diesem Fall werden die Ergebnisse korrekt nach Autor geordnet, aber nicht von Rank. Wenn ich die Reihenfolge der Ergebnisse ändern von Rank bestellt werden, aber nicht durch Autor.

musste ich meine eigene Sortierung der Ergebnisse zurückgreifen, die ich nicht sehr gerne. Hat jemand eine Lösung für dieses?

Bearbeiten : Leider auch ist es nicht Ausdrücke in der ORDER BY-Klausel akzeptieren (Sharepoint löst eine Ausnahme). Meine Vermutung ist, dass selbst wenn die Abfrage wie legitime SQL sieht es irgendwie analysiert wird, bevor sie an den SQL-Server bereitgestellt wird.

Ich habe versucht, die Abfrage mit SQL Profiler zu fangen, aber ohne Erfolg.

Edit 2 : Am Ende habe ich durch eine einzige Säule verwendet Ordnung (Autor in meinem Fall, da es das wichtigste ist) und hat die zweite Bestellung im Code auf dem TOP N der Ergebnisse. Funktioniert gut genug für das Projekt, läßt aber ein schlechtes Gefühl von kludgy Code.

War es hilfreich?

Lösung

Microsoft schließlich hat einen Knowledge Base-Artikel zu diesem Thema.

„Bei Verwendung von RANK in der ORDER BY-Klausel einer Sharepoint-Suchabfrage, sollten keine andere Eigenschaften verwendet werden“

http://support.microsoft.com/kb/970830

Symptom: Wenn in der ORDER BY-Klausel einer Sharepoint-Suchabfrage mit RANK nur die erste ORDER BY-Spalt in den Ergebnissen verwendet wird.

Ursache: RANK ist eine spezielle Eigenschaft, die in dem Volltextindex rangierte und kann daher nicht mit anderen verwalteten Eigenschaften verwendet werden.

Auflösung: Verwenden Sie nicht mehr Eigenschaften in Verbindung mit der RANK-Eigenschaft verwenden.

Andere Tipps

Rank ist eine spezielle Spalte in MOSS FullTextSqlQuery, die einen numerischen Wert in den Rang jedes Ergebnis. Dieser Wert wird für jede Abfrage unterschiedlich sein und ist relativ zu den anderen Ergebnissen für diese bestimmte Abfrage. Aufgrund dieses Ranges soll einen eindeutigen Wert für jedes Ergebnis hat, und von Rang Sortierung dann wäre Autor die gleich sein wie nur nach Rang sortieren. Ich würde versuchen, auf eine andere Spalte statt Rang Sortierung, um zu sehen, ob die Ergebnisse wieder, wie zu erwarten, wenn so Ihre Probleme auf dem Weg zusammenhängen könnte MOSS die Ergebnisse Ranking, das für jede Abfrage variieren.

Auch Sie haben Recht, die Abfrage wie SQL aussieht, aber es ist nicht die Abfrage tatsächlich an den SQL-Server übergeben, ist es spezielle Microsoft Enterprise Search SQL Query Syntax.

Auch ich erlebt das gleiche Problem mit FullTextSqlQuery und MOSS 2007, wo nur die erste Spalte in einem mehrspaltigen „ORDER BY“ respektiert wird.

trat ich dieses Thema in den MSDN-Foren für Sharepoint-Suche, haben aber alle Antworten nicht erhalten:

http: / /social.msdn.microsoft.com/Forums/en-US/sharepointsearch/thread/489b4f29-4155-4c3b-b493-b2fad687ee56

Ich habe keine Erfahrung in Sharepoint, aber wenn es der Fall ist, wo nur eine ORDER BY-Klausel geehrt wird ich würde es auf einen Ausdruck ändern, anstatt eine Spalte. Unter der Annahme, „Rank“ ist eine numerische Spalte mit einem Maximalwert von 10 wird folgender arbeiten kann:

SELECT WorkId FROM SCOPE() ORDER BY AUTHOR + (10 - Rank) ASC
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top