Pregunta

Estoy usando un FullTextSqlQuery en SharePoint server 2007 (MOSS) y la necesidad de ordenar los resultados por dos columnas:

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

Sin embargo, parece que sólo la primera columna de la ORDEN, se toma en cuenta a la hora de devolver los resultados.En este caso los resultados se ordenan correctamente por el Autor, pero no por el Rango.Si puedo cambiar el orden de los resultados se ordenarán por orden de Clasificación, pero no por el Autor.

Tuve que recurrir a mi propia ordenación de los resultados, lo que no me gusta mucho.Alguien ha una solución a esto?

Editar:Por desgracia, también no aceptar las expresiones de la cláusula ORDER BY (SharePoint lanza una excepción).Mi conjetura es que, incluso si la consulta se parece legítimo SQL se analiza de alguna manera antes de ser servido a la de SQL server.

Traté de coger la consulta con el Analizador de SQL, pero fue en vano.

Edit 2:Al final he usado el pedido por una sola columna (Autor, en mi caso, ya que es el más importante) y hizo el segundo pedido en el código en la parte SUPERIOR N de los resultados.Funciona lo suficientemente bueno para el proyecto, pero deja una mala sensación de desacoplados código.

¿Fue útil?

Solución

Microsoft finalmente publicado un artículo de knowledge base acerca de este problema.

"Al utilizar la CLASIFICACIÓN en la cláusula ORDER BY de SharePoint consulta de Búsqueda, sin otras propiedades deben ser utilizados"

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

Síntoma:Cuando se utiliza el RANGO en la cláusula ORDER BY de una Búsqueda de SharePoint consulta sólo el primer PEDIDO de la columna se utiliza en los resultados.

Causa:RANGO es una propiedad especial que está clasificado en el índice de texto completo y por lo tanto no se puede utilizar con otras propiedades administradas.

Resolución:No utilice varias propiedades en conjunción con el RANGO de la propiedad.

Otros consejos

Rango es una columna especial en MOSS FullTextSqlQuery que dar un valor numérico a la clasificación de cada resultado.Ese valor será diferente para cada consulta, y es relativa los otros resultados de esa consulta en particular.Porque de este rango debe tener un valor único para cada resultado, y la clasificación por rango, a continuación, el autor podría ser la misma que acaba de ordenar por rango.Me gustaría tratar de clasificación en la otra columna en lugar de rango para ver si los resultados como se puede esperar, si por lo que su problema podría estar relacionado con la forma en que el MUSGO es el ranking de los resultados, que varían para cada consulta única.

También tienes razón, la consulta es como SQL, pero no es la consulta realmente se pasa a la de SQL server, es especial de Búsqueda Empresariales de Microsoft SQL sintaxis de la Consulta.

Yo también estoy experimentando el mismo problema con FullTextSqlQuery y MOSS 2007, donde sólo la primera columna de una multi-columna "ORDEN" es respetada.

He entrado en este tema en los Foros de MSDN para la Búsqueda de SharePoint, pero no han recibido respuestas:

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

No tengo experiencia en SharePoint, pero si es el caso donde sólo una cláusula ORDER BY es honrada que me gustaría cambiar a una expresión en lugar de una columna.Suponiendo que "Rango" es una columna numérica con un valor máximo de 10, el siguiente puede trabajar:

SELECT WorkId FROM SCOPE() ORDER BY AUTHOR + (10 - Rank) ASC
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top