Рекомендации схемы Solr для многозначных данных с датами - PullRequest
1 голос
/ 02 мая 2019

Мне было поручено расширить базу данных медицинской информации, чтобы включить дополнительные функции для поиска данных пациента.Существующая база данных использует Solr для хранения и запроса данных, таких как дата рождения и симптомы:

patient
{
   birth date : date
   symptoms:
      heart disease
      diabetes
      neuropathy
   heart disease onset : date
   diabetes onset : date
   neuropathy onset : date
}

Мы хотим расширить эту базу данных, включив в нее более детальную информацию по дате посещения, например:

patient
{
   birth date : date
   symptoms:
      heart disease
      diabetes
      neuropathy
   heart disease onset : date
   diabetes onset : date
   neuropathy onset : date
   visit date 1 : date
      weight : float
      systolic blood pressure : int
      HbA1c : float
   visit date 2 : date
      weight : float
      height : float
      systolic blood pressure : int
}

Нет никакой гарантии, что все параметры будут присутствовать при всех посещениях.Цель состоит в том, чтобы иметь возможность запрашивать медицинские данные во временных диапазонах, таких как: Возврат всех пациентов с сердечными заболеваниями, у которых систолическое артериальное давление увеличилось на 20 за 5 лет.

Я опытный программист, но новичок в Solr,Похоже, что Solr не поддерживает присоединение поля даты к другим полям.Я думал о трех разных подходах к схеме:

  1. Поля с несколькими значениями, но я не понимаю, как это также может хранить связанную дату посещения.
field name="weight" type="float" indexed="true" stored="true" multiValued="true"
Многозначные поля посещения с параметрами, сохраненными в посещении.Я не понимаю, как Solr может запрашивать данные в параметре даты.
field name="visit" indexed="true" stored="true" multiValued="true"
visit
{
   date
   weight : float
   systolic blood pressure : int
   HbA1c : float
}
Объединить все данные в одно поле с разделителем.
"visit-date:01012019|weight:float|height:float|HbA1c:float"

Любая помощь по схеме будет принята с благодарностью!

1 Ответ

0 голосов
/ 02 мая 2019

Существует только так много, что вы можете сделать с вложенными данными в Solr.Другой подход, который вы можете использовать, - разбить информацию, например, на документ Solr для пациента и один документ Solr за посещение.Используя ваши данные, это будет выглядеть примерно так:

patient
{
   patient-id: 123
   birth date : date
   symptoms:
      heart disease
      diabetes
      neuropathy
   heart disease onset : date
   diabetes onset : date
   neuropathy onset : date
}

visit 1
{
  patient-id: 123
  visit date: date
  weight : float
  systolic blood pressure : int
  HbA1c : float
}

visit 2
{
  patient-id: 123
  visit date: date
  weight : float
  systolic blood pressure : int
  HbA1c : float
}

Проблема здесь заключается в том, что (общая) информация о пациенте будет распространяться через несколько документов Solr, что может усложнить другие запросы.Вы можете использовать группировку Solr, чтобы справиться с этим, но все же это потребует некоторых размышлений.

...