MarkLogic - поиск по возрасту - PullRequest
2 голосов
/ 12 марта 2019

Мне нужно настроить computed-buckets для ограничения возрастного диапазона человека, используя индекс для даты рождения.Возрастные диапазоны с интервалами в форме 19-30, 31-40, 41-50 и т. Д. Поскольку возможные значения привязки довольно ограничены, у меня возникают проблемы при настройке.Например, если сегодня 2019-01-01, для диапазона 19-30 лет мне нужно включить даты рождения с 1988-01-02 (самый старый 30-летний) до 2000-01-01 (самый молодой 19-летний)).Как мне сконфигурировать этот computed-bucket?

Для атрибута "lt", если я использую lt = "- P19Y" Я получаю меньше, чем 2000-01-01, поэтому 1999-12-31 - моя последняя включенная дата рождения, за исключением тех, кому сегодня исполнилось 19 лет.

А для атрибута "ge", если я использую ge = "- P31Y" , яЯ включил дату рождения 1988-01-01, которая на один день выходит за рамки моего предполагаемого диапазона, т. е. этому человеку только что исполнилось 31 сегодня.

Если бы я мог использовать "завтра" и "вчера" в качестве якорейэти значения будут работать.Или, если бы я мог указать значение типа ge, означающее «минус 31 год плюс 1 день», это тоже сработало бы.Но я не уверен, как сделать эту работу с учетом ограничений.Кто-нибудь настраивал ограничение по возрасту человека с ведрами, используя индекс даты рождения?

TIA

1 Ответ

0 голосов
/ 14 марта 2019

Я полагаю, что якорная опция начала дня для вычисленных сегментов - это то, что вы ищете.

  <constraint name="age">
    <range type="xs:date">
      <element name="birthdate"/>
      <computed-bucket name="18" ge="-P18Y" 
       anchor="start-of-day">18 and under</computed-bucket>
      <computed-bucket name="19-30" ge="P30Y" lt="-P18Y" 
       anchor="start-of-day">19 to 30</computed-bucket>
      <computed-bucket name="31-40" ge="-P40Y" lt="-P30Y" 
       anchor="start-of-day">31 to 40</computed-bucket>
      <computed-bucket name="41-50" ge="-P50Y" lt="-P40Y" 
       anchor="start-of-day">41 to 40</computed-bucket>
      <computed-bucket name="51" lt="-P50Y" 
       anchor="start-of-day">51 and older</computed-bucket>
    </range>
  </constraint>

Документацию можно найти здесь: http://docs.marklogic.com/guide/search-dev/search-api#id_22725

Редактировать: изначально атрибуты ge и lt были задом наперед для нужных сегментов.

...