带日期的多值数据的Solr模式建议

带日期的多值数据的Solr模式建议,solr,solrj,Solr,Solrj,我的任务是扩展医疗信息数据库,以包括搜索患者数据的附加功能。现有数据库使用Solr存储和查询出生日期和症状等数据: patient { birth date : date symptoms: heart disease diabetes neuropathy heart disease onset : date diabetes onset : date neuropathy onset : date } 我们希望扩展此数据库,

我的任务是扩展医疗信息数据库,以包括搜索患者数据的附加功能。现有数据库使用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
}
无法保证所有访问都会显示所有参数。目标是能够在一定时间范围内查询医疗数据,例如: 返回5年内收缩压升高20的所有心脏病患者

我是一个有经验的程序员,但对Solr来说是个新手。Solr似乎不支持将日期字段附加到其他字段。我考虑了3种不同的模式方法:

  • 多值字段,但我不知道如何存储关联的访问日期
  • 多值就诊字段,其参数存储在就诊中。我不知道Solr如何在date参数内进行查询
  • 使用分隔符将所有数据连接到单个字段中

  • 任何模式帮助都将不胜感激

    对于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分组来处理其中的一些问题,但仍然需要一些思考。

    在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分组来处理其中的一些问题,但仍然需要一些思考。

    谢谢!我将尝试这种方法,看看我能走多远。这可能还需要对查询进行一些后期处理。谢谢!我将尝试这种方法,看看我能走多远。它可能还需要对查询进行一些后处理
    "visit-date:01012019|weight:float|height:float|HbA1c:float"
    
    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
    }