2012-12-13 1 views
5

RavenDB 쿼리에서 최근 문서를 향상시킬 수 있습니까?RavenDB의 최신 성을 기준으로 문서를 어떻게 향상시킬 수 있습니까?

This question is exactly what I want to do 그러나 RavenDB가 아닌 고유 한 Lucene을 나타냅니다. 예를 들어

, 내가 날짜가 누가 문서를 높일 수있는 방법이

public class Document 
{ 
    public string Title { get; set; } 
    public DateTime DateCreated { get; set; } 
} 

같은 문서가있는 경우, 예를 들어, 지정된 날짜에 가까운 DateTime.UtcNow?

결과에 영향을주는 다른 검색 매개 변수가 있으므로 OrderByDecending(x => x.DateCreated)을 사용하고 싶지 않습니다.

답변

6

인덱싱 중에 boost 할 수 있습니다. 꽤 오랫동안 RavenDB에 있었지만 문서에는 전혀 없습니다. 그러나 here을 보여주는 몇 가지 단위 테스트가 있습니다.

이러한 테스트는 단일 부스트 값을 보여 주지만 대신 다른 문서 값으로 쉽게 계산할 수 있습니다. 색인 항목이 작성 될 때 완료되므로 전체 문서를 사용할 수 있습니다. 이것을 참조한 게시물에 설명 된 기술과 결합 할 수 있어야합니다.

Map = docs => from doc in docs 
       select new 
       { 
        Title = doc.Title.Boost(doc.DateCreated.Ticks/1000000f) 
       }; 

당신은 또한 당신의 검색 알고리즘에서 다른 필드가있는 경우 유용 할 수 있습니다 대신 제목 필드의 전체 문서를 높일 수 :

Map = docs => from doc in docs 
       select new 
       { 
        doc.Title 
       }.Boost(doc.DateCreated.Ticks/1000000f); 

당신이 바로 실험을해야 할 수도 있습니다를 부스트 량에 사용할 값. 밀리 세컨드 (millisecond)에 1 만개의 진드기가 있기 때문에 그렇게 많은 수로 나눕니다.

또한 작업중인 DateTime은 UTC로되어 있거나 출처를 제어 할 수없는 경우 DateTimeOffset을 사용하십시오. 왜? 일부 참조 점에서 계산 된 지속 시간을 사용하고 있기 때문에 다른 표준 시간대 또는 일광 절약 시간 변경시 모호한 결과를 원하지 않기 때문입니다.

+0

부스트 문서에 대한 링크에 감사드립니다.하지만 최근 성별로 어떻게 부스팅합니까? 희망을 갖고 명확하게하기 위해 약간의 질문을 업데이트했습니다. –

+0

설명해 주셔서 감사합니다. 이것에 대해 조금 생각해 봅시다. 링크 된 게시물에 설명 된 기술의 까마귀 맛을 사용하여 가능해야합니다. –

+0

답변을 업데이트했습니다. 이 결과가 당신이 찾고있는 결과물이되기를 바랍니다. –

관련 문제