Question

J'utilise FullTextSqlQuery dans SharePoint 2007 (MOSS) et je dois classer les résultats en deux colonnes:

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

Cependant, il semble que seule la première colonne de ORDER BY soit prise en compte lors du renvoi des résultats. Dans ce cas, les résultats sont classés correctement par auteur, mais pas par rang. Si je change l'ordre, les résultats seront classés par rang mais pas par auteur.

Je devais avoir recours à mon propre tri des résultats, ce que je n’aime pas beaucoup. Quelqu'un a-t-il une solution à cela?

Modifier : malheureusement, il n'accepte pas les expressions de la clause ORDER BY (SharePoint lève une exception). À mon avis, même si la requête ressemble à du SQL légitime, elle est analysée avant d’être transmise au serveur SQL.

J'ai essayé de saisir la requête avec SQL Profiler, mais en vain.

Modifier 2 : au final, j’ai utilisé le classement par colonne unique (Auteur dans mon cas, car c’est le plus important), puis le deuxième classement par code dans le TOP N des résultats. Fonctionne assez bien pour le projet, mais laisse un mauvais sentiment de code kludgy.

Était-ce utile?

La solution

Microsoft finalement a publié un article de la base de connaissances sur ce problème.

" Lors de l'utilisation de RANK dans la clause ORDER BY d'une requête de recherche SharePoint, aucune autre propriété ne doit être utilisée "

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

Symptôme: Lors de l'utilisation de RANK dans la clause ORDER BY d'une requête de recherche SharePoint, seule la première colonne ORDER BY est utilisée dans les résultats.

Cause: RANK est une propriété spéciale classée dans l'index de texte intégral et ne peut donc pas être utilisée avec d'autres propriétés gérées.

Résolution: n'utilisez pas plusieurs propriétés conjointement avec la propriété RANK.

Autres conseils

Rank est une colonne spéciale de MOSS FullTextSqlQuery qui donne une valeur numérique au rang de chaque résultat. Cette valeur sera différente pour chaque requête et est relative par rapport aux autres résultats de cette requête particulière. En raison de ce rang devrait avoir une valeur unique pour chaque résultat, et le tri par rang puis par auteur serait le même que le tri par rang. J'essayerais de trier sur une autre colonne plutôt que sur le rang pour voir si les résultats reviennent comme prévu, sans quoi votre problème pourrait être lié à la façon dont MOSS classe les résultats, ce qui varie pour chaque requête unique.

Vous avez également raison, la requête ressemble à SQL, mais ce n'est pas la requête transmise au serveur SQL, mais une syntaxe spéciale pour la requête SQL de Microsoft Enterprise Search.

Moi aussi, je rencontre le même problème avec FullTextSqlQuery et MOSS 2007, où seule la première colonne d'une colonne "ORDER BY" est composée de plusieurs colonnes. est respecté.

Je suis entré dans cette rubrique dans les forums MSDN pour SharePoint Search, mais je n'ai reçu aucune réponse:

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

Je n'ai aucune expérience de SharePoint, mais si c'est le cas où une seule clause ORDER BY est honorée, je la changerais en une expression plutôt qu'en une colonne. En supposant que " Rank " est une colonne numérique avec une valeur maximale de 10, les éléments suivants peuvent fonctionner:

SELECT WorkId FROM SCOPE() ORDER BY AUTHOR + (10 - Rank) ASC
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top