我有一个Solr索引,包含患者的医疗记录。虽然该指数是围绕笔记建立的,但我们通常对患者感兴趣。我通常使用group
和facet
功能按患者对搜索结果进行分组。这种方法通常效果很好,但有一种情况并非如此。
让我们说我想要一份所有患有“关节炎”和“立普妥”的患者的清单。我可以像这样进行小组搜索:
q = NOTE:(arthritis AND lipitor)
facet = true
facet.field = PATIENT_ID
但这仅适用于在同一个音符中至少有一个包含两个术语的注释的患者。我真正想要的是患有至少一个含有“关节炎”的注释和至少一个含有“lipitor”的注释的患者。我不在乎这些条款是否包含在同一张注释中。
Solr有没有办法做到这一点?
答案 0 :(得分:1)
有:使用嵌套文档,其中父文档是患者,子文档是注释。
我建议你使用最新的Solr版本,因为这是一个一直在改进的功能(也是一些补丁)
使用此设置有一些缺点(通常灵活性稍差),但对于您的用例,我认为可以很好地工作。
对于文档:
答案 1 :(得分:0)
嵌套文档有效,但还有另一种方法可以在不更改数据库本身的情况下完成。以下将正确地返回患有至少一个含有关节炎的注释的患者。并且至少有一个包含' lipitor的注释。
q = arthritis
fq = {!join from=PATIENT_ID to=PATIENT_ID}lipitor,
df = NOTE
facet = true
facet.field = PATIENT_ID