RavenDB 인덱싱에 문제가 있습니다.RavenDB : 정적 인덱스 캐스팅 및 정렬 문제
간단한 쿼리는 다음과 같다 : 추가 옵션
from doc in docs.MyCollection
select new { Rate = doc.Rate, IsReady = doc.IsReady, IsDeleted = doc.IsDeleted, MyId = doc.MyId }
: 실행시
var values =
myCollection.Query.Where(w =>
w.MyId == MyId &&
w.IsReady == false &&
w.IsDeleted &&
w.Rate > 0)
까마귀 동적 색인 생성 필드 -> 속도; 저장 용량 -> 아니요; 인덱싱 -> 기본값; 정렬 -> 더블;
필드 비율은 십진수 유형입니다.
문제 :
이 같은 인덱스 지정된 때 정적 인덱스를 추가하고 싶었지만 :
public class MyIndex : AbstractIndexCreationTask<MyCollection> {
public MyIndex() {
Map = d => d.Select(s => new { Rate = s.Rate, IsReady = s.IsReady, IsDeleted = s.IsDeleted, MyId = s.MyId });
Sort(x => x.Rate, SortOptions.Double);
}
}
을 까마귀는 약간 다른 인덱스를 만드는
: 추가로
from doc in docs.MyCollection
select new { Rate = (decimal)doc.Rate, IsReady = doc.IsReady, IsDeleted = doc.IsDeleted, MyId = doc.MyId }
을 옵션 : 필드 -> 비율; 저장 용량 -> 아니요; 인덱싱 -> 기본값; 정렬 -> 더블;
유일한 차이점
내 필드 유형이 진수을하기 때문에 내가 정적 인덱스에 캐스팅하고 내가 더블 정렬 옵션을 사용하고 있다는 점이다.때문에 Raven은 내 정적 색인을 사용하지 않고 대신 쿼리가 실행될 때마다 동적 색인을 만듭니다.
Sort() 내부에서 일부 캐스팅을 시도했지만 색인이 전혀 작성되지 않았습니다. 이 문제를 극복하는 한 가지 방법은 생성 된 관리 콘솔에서 정적 인덱스를 수동으로 수정하는 것이지만 좋은 해결책은 아닙니다.
어떻게 해결할 수 있을까요? 감사합니다. .
편집 : 다른 예 (/ 미만 이상)
필드 날짜 시간 유형과 같은 쿼리 술어 날짜 시간 값을 사용. Raven은 동적 인덱스 생성에서 문자열을 SortOption으로 선택하고 정적 인덱스를 준비하려고 할 때 캐스팅 문제가 발생합니다.
답변 해 주셔서 감사합니다. 네, 인덱스 이름을 직접 지정할 수는 있습니다.하지만 그렇게하고 싶지는 않습니다. :) Session.Query()를 직접 사용하지 않고 이름을 지정하지 않고 Raven이 인덱스를 자동으로 선택하면 더 쉽게 될 것입니다. –