2014-02-18 2 views
1

간단한 쿼리로 RavenDB를 쿼리 할 때 속성이 정수일 경우에도 SortOptions가 항상 String으로 설정되므로 자동 인덱스는 거의 쓸모가 없습니다.RavenDB 자동 인덱스 : 숫자 필드 (SortOptions.String)의 검색 옵션이 잘못되었습니다.

var test = session.Query<Cup>() 
    .OrderBy(o => o.Order) 
    .ToList(); 


public class Cup 
{ 
    public string Id { get; set; } 
    public string Name { get; set; } 
    public int Order { get; set; } 
} 

정적 색인을 수동으로 만들어야하나요?

답변

0

기본적으로 문자열 기준으로 정렬됩니다. 비헤이비어를 사용자 정의하려면 인덱스를 작성해야합니다.

// Assuming ASP.NET 
public class Global 
{ 
    public static IDocumentStore Store; 

    public void Application_Start(object sender, EventArgs e) 
    { 
     Store = new DocumentStore { ... }.Initialize(); 
     Indexes.CreateIndexes(typeof(Cup_ByOrder).Assembly, Store); 
    } 
} 

을 그리고 지금은 예상대로 작동합니다, 응용 프로그램로드에서 많은 시간

public class Cup_ByOrder : AbstractIndexCreationTask<Cup> 
{ 
    public Cup_ByOrder() 
    { 
     Map = cups => from cup in cups 
        select new 
        { 
         cup.Order 
        } 

     Sort(x=>x.Order, SortOptions.Int); 
    } 
} 

을 인덱스를 통해 추가하지 않습니다

....

+0

정답입니다. 그러나 모든 필드를 자동 인덱스 용 문자열로 처리하면 자동 인덱스 기능이 전혀 쓸모 없게됩니다. 자동 인덱스 (숫자가 숫자로 취급되는 경우)로도 괜찮 으면 자동 생성 된 코드가 문자열을 사용하기 때문에 모든 보일러 플레이트 코드를 작성해야합니다. – ozu