트리는 필드 범위는 일정 범위의 결과를 미리 계산하고 저장함으로써 빠르게 조회 할 "TrieRange의 유일한 단점 때문에 인덱스를 추가 용어로, 조금 큰 인덱스 크기이다" 색인에서 단일 레코드로 표시됩니다. 명확하게하기 위해, 예제에서는 10을 기준으로 정수를 사용합니다. 모든 개념에 동일한 개념이 적용됩니다. 여기에는 날짜가 포함되어 있습니다. 날짜는 1970 년 이후의 초 수로 나타낼 수 있기 때문입니다.
숫자 12345678
의 색인을 생성한다고 가정 해 봅시다. 이것을 다음과 같은 토큰으로 토큰화할 수 있습니다.
12345678
123456xx
1234xxxx
12xxxxxx
토큰 12345678
토큰은 실제 정수 값을 나타냅니다. x
숫자가있는 토큰은 범위를 나타냅니다.123456xx
은 12345600
에서 12345699
범위를 나타내고 해당 범위의 토큰을 포함하는 모든 문서와 일치합니다.
목록의 각 토큰에서 연속적으로 x
자릿수가 연속적으로 증가합니다. 이것은 정밀 단계에 의해 제어됩니다. 필자는 두 개의 정밀도를 사용하여 각 여분의 토큰을 만들었 기 때문에 2의 정밀도 단계를 사용한다고 말할 수 있습니다. 3의 정밀도 단계를 사용하려면 이러한 토큰을 얻습니다.
12345678
12345xxx
12xxxxxx
4의 정밀 단계 :
12345678
1234xxxx
1의 정밀 단계 :
12345678
1234567x
123456xx
12345xxx
1234xxxx
123xxxxx
12xxxxxx
1xxxxxxx
이 쉽게 알 방법 토큰에 작은 정밀 단계 결과와 크기를 증가 색인의. 그러나 범위 쿼리를 빠르게 처리합니다. 내가 1250에서 1275의 범위를 조회하고 싶었 경우 트라이 필드없이
, 루씬 25 개 항목을 가져올 것 (
1250
,
1251
,
1252
, ...,
1275
) 및 검색 결과를 결합합니다. 트라이 필드 (1 정밀 단계), 우리는 8 개 항목을 가져 오는 멀리 얻을 수 (
125x
,
126x
,
1270
,
1271
,
1272
,
1273
,
1274
,
1275
),
125x
는
1250
의 미리 계산 된 집계하기 때문에 -
1259
은. 1보다 큰 정밀도 단계를 사용하면 쿼리는 25 개의 개별 항목을 모두 가져 오는 것으로 되돌아갑니다.
참고 : 실제로, 정밀도 단계는 각 토큰에 대해 다듬은 비트 수를 나타냅니다. 숫자를 16 진수로 쓰려면 4의 정밀도 단계로 각 토큰에 대해 16 진수를 하나씩 자릅니다. 8의 정밀도 단계는 두 개의 16 진수를 트림합니다.
5 년이 지난 지금도 Google, Solr 매뉴얼, solr wiki 등과 같은 상황입니다. 아, 아님, 뭔가 바뀌 었습니다 : Google이 이제 여기에 있습니다 :) – alisa