일/월 쌍이 까다 롭다면 (나도 모르겠는지 모르겠다.) "1980 년 생년월일"필드가없는 이유는 무엇입니까? (생존했는지 여부). 그럼 당신은 1980 년에 대한 검색을 할 필요가 있습니다. 이것은 일/월 페어가 실제로이지만 쉽게 사용할 수있는 유형으로 저장됩니다.
1980 년이 윤년이기 때문에 내가 선택한 이유입니다. 그렇지 않으면 2 월 29 일의 생일을 가진 사람들이 표현하기 어려울 수 있습니다.
또는 정수의 형태로 "일/월"쌍 :
(100 * month) + day
는 당신에게 검색 및 인덱스하기 쉬운 것입니다 간단한 표현을 제공한다. 나는 보통 하나의 필드에 데이터를 저장하는 것이 두 개의 필드를 사용하는 것보다 간단하다는 것을 발견했다. 그럼 다시, 나는 Solr을 사용한 적이 없다. ...
EDIT : 나는 또 다른 생각을 가지고있다. 조금 상쾌하지만 ... 심지어
의 출생을 효과적으로 월, 일, 년 형식으로 저장하십시오. 나는 이것은 당신이 출생을 저장하는 데 필요하지 않은 가정한다 (SOLR는 MM/DD/YYYY 형식으로 그것을 쉽게 할 수 있는지 알고 다음 사전 식 순서로 검색을 수행하지만, 대안은
(100000 * month) + (1000 * dayOfMonth) + (year - 1900)
하지 않습니다 1900 년 이전의 날짜입니다.
원래 생년월일은 복구 할 수 있지만 주문은 생일 순서대로 진행되며 가장 오래된 사람이 특정 날짜에 먼저 표시됩니다.
사람들을 실제로는 나이으로 분류하는 것은 어렵다는 것을 의미합니다. 그게 너에게 문제가되는지 나는 모른다. 내가 말했듯이
어쨌든, 조금 오프 - 더 - 벽,하지만 그런 다음 그 값을 검색 :
좋습니다. 감사합니다. 수치스러운 일이지만 생년월일 필드에서 직접 검색하는 방법은 아무도 없습니다. "BirthdayField"라는 자체 FieldType을 IntField처럼 인덱스를 추가하는 데 골머리를 앓 았지만 DateField처럼 쿼리했습니다. .. Lotsa work. –
아마도이 필드에서 직접 검색 할 수는 있지만 효율적이지는 않습니다. 사실로 인해 추가 로직이 많이 필요하고 단일 쿼리에서 완전한 대답을 얻을 수 없습니다. – Max
예, "직접이 분야에 관한"질문이었습니다. 나는 정말로 대답하고 싶었습니다. 대신에 모든 사람들이 제가 물었던 "follow-up"질문에 대한 답을 제공했습니다. 그리고 나는 (당신이 제안한 것의 라인을 따라) 후속 조치를위한 해결책을 이미 가지고있었습니다. –