Pergunta

Eu estou usando um FullTextSqlQuery no SharePoint 2007 (MOSS) e necessidade de ordenar os resultados por duas colunas:

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

No entanto, parece que apenas a primeira coluna ORDER BY é levado em conta quando retornar resultados. Neste caso, os resultados são ordenados corretamente pelo autor, mas não por Rank. Se eu alterar a ordem dos resultados será ordenada pela Rank, mas não por Autor.

Eu tive que recorrer à minha própria ordenação dos resultados, que eu não gosto muito. Alguém tem uma solução para isso?

Editar : Infelizmente, ele também não aceita expressões na cláusula ORDER BY (SharePoint lança uma exceção). Meu palpite é que, mesmo se os olhares de consulta como SQL legítimo ele é analisado de alguma forma antes de ser servido para o servidor SQL.

Eu tentei pegar a consulta com o SQL Profiler, mas sem sucesso.

Editar 2 : No final, eu utilizado ordenação por uma única coluna (Autor no meu caso, uma vez que é o mais importante) e fez a segunda ordenação em código no TOP N dos resultados. Funciona bem o suficiente para o projeto, mas deixa uma sensação ruim de código kludgy.

Foi útil?

Solução

Microsoft finalmente postou um artigo da base de conhecimento sobre esta questão.

"Ao usar RANK na cláusula ORDER BY de uma consulta de pesquisa do SharePoint, há outras propriedades devem ser usados"

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

Sintoma: Ao utilizar RANK na cláusula ORDER BY de uma consulta de pesquisa do SharePoint apenas o primeiro ORDER BY coluna é usada nos resultados.

Causa: RANK é uma propriedade especial que é classificado no índice de texto completo e, portanto, não pode ser usado com outras propriedades gerenciadas.

Resolução: Não use várias propriedades em conjunto com a propriedade RANK.

Outras dicas

Rank é uma coluna especial no MOSS FullTextSqlQuery que dar um valor numérico para a classificação de cada resultado. Esse valor será diferente para cada consulta, e é relação para os outros resultados para essa consulta particular. Devido a esta classificação deve ter um valor único para cada resultado, e a classificação por categoria, em seguida, o autor seria o mesmo que apenas a classificação por categoria. Gostaria de tentar a classificação em outra coluna, em vez de classificação para ver se os resultados voltar como você espera, se assim for o seu problema pode estar relacionado com a forma como MOSS é ranking os resultados, que irá variar para cada consulta único.

Além disso, você está certo, os olhares de consulta como SQL, mas não é a consulta realmente passado para o servidor SQL, é especial sintaxe Microsoft Enterprise Search SQL Query.

Eu também estou experimentando o mesmo problema com FullTextSqlQuery e MOSS 2007, onde apenas a primeira coluna em um multi-coluna "ORDER BY" é respeitada.

entrei neste tópico nos fóruns do MSDN para SharePoint Search, mas não recebi qualquer resposta:

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

Eu não tenho nenhuma experiência em SharePoint, mas se é o caso em que apenas uma cláusula ORDER BY está sendo homenageado gostaria de mudar para uma expressão em vez de uma coluna. Assumindo "Rank" é uma coluna numérica com um valor máximo de 10 o seguinte pode funcionar:

SELECT WorkId FROM SCOPE() ORDER BY AUTHOR + (10 - Rank) ASC
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top