문제

저는 SharePoint 2007(MOSS)에서 FullTextSqlQuery를 사용하고 있으며 결과를 두 열로 정렬해야 합니다.

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

그러나 결과를 반환할 때 ORDER BY의 첫 번째 열만 고려되는 것 같습니다.이 경우 결과는 작성자별로 올바르게 정렬되지만 순위별로 정렬되지는 않습니다.순서를 변경하면 결과는 순위별로 정렬되지만 작성자별로 정렬되지는 않습니다.

나는 내 자신의 결과 정렬에 의존해야 했는데, 이는 별로 마음에 들지 않습니다.누구든지 이것에 대한 해결책이 있습니까?

편집하다:불행하게도 ORDER BY 절의 식도 허용되지 않습니다(SharePoint에서는 예외가 발생합니다).내 생각에는 쿼리가 합법적인 SQL처럼 보이더라도 SQL 서버에 제공되기 전에 어떻게든 구문 분석되는 것 같습니다.

SQL Profiler를 사용하여 쿼리를 포착하려고 시도했지만 소용이 없었습니다.

편집 2:결국 나는 단일 열(내 경우에는 작성자가 가장 중요하기 때문에)별로 정렬을 사용하고 결과의 TOP N에 대한 코드에서 두 번째 정렬을 수행했습니다.프로젝트에 적합하게 작동하지만 코드가 복잡하다는 느낌이 남습니다.

도움이 되었습니까?

해결책

마이크로소프트 마지막으로 이 문제에 대한 지식 기반 기사를 게시했습니다.

"SharePoint 검색 쿼리의 ORDER BY 절에서 RANK를 사용할 때 다른 속성을 사용해서는 안 됩니다."

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

징후:SharePoint 검색 쿼리의 ORDER BY 절에 RANK를 사용하는 경우 첫 번째 ORDER BY 열만 결과에 사용됩니다.

원인:RANK는 전체 텍스트 인덱스에서 순위가 ​​지정되는 특수 속성이므로 다른 관리 속성과 함께 사용할 수 없습니다.

해결:RANK 속성과 함께 여러 속성을 사용하지 마세요.

다른 팁

순위는 각 결과의 순위에 숫자 값을 제공하는 MOSS FullTextSqlQuery의 특수 열입니다.해당 값은 쿼리마다 다르며 상대적인 해당 특정 쿼리에 대한 다른 결과에 적용됩니다.이 때문에 순위는 각 결과에 대해 고유한 값을 가져야 하며 순위별로 정렬하면 작성자는 순위별로 정렬하는 것과 동일합니다.순위 대신 다른 열을 정렬하여 예상대로 결과가 나오는지 확인하겠습니다. 그렇다면 문제는 MOSS가 결과 순위를 매기는 방식과 관련이 있을 수 있으며 이는 각 고유 쿼리에 따라 다릅니다.

또한 당신 말이 맞습니다. 쿼리는 SQL처럼 보이지만 실제로 SQL 서버에 전달된 쿼리는 아니며 특별한 Microsoft Enterprise Search SQL 쿼리 구문입니다.

나 역시 다중 열 "ORDER BY"의 첫 번째 열만 존중되는 FullTextSqlQuery 및 MOSS 2007에서 동일한 문제를 경험하고 있습니다.

SharePoint 검색용 MSDN 포럼에 이 항목을 입력했지만 아무런 응답도 받지 못했습니다.

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

저는 SharePoint에 대한 경험이 없지만 하나의 ORDER BY 절만 적용되는 경우 열이 아닌 식으로 변경하겠습니다."순위"가 최대값이 10인 숫자 열이라고 가정하면 다음이 작동할 수 있습니다.

SELECT WorkId FROM SCOPE() ORDER BY AUTHOR + (10 - Rank) ASC
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top