将用户指定的内部版本添加到 Solr 核心?

Add user-specified internal version to Solr core?

我有一个脚本可以将有关药物的信息加载到 Solr 核心中,就像您在 RxNorm 中找到的那样。所有文档都有一个相对恒定的模式。见下文。

我还想给核心添加一个文档,有两个属性:

  1. 填充核心的日期
  2. 做人口的软件版本

是否有既定的方法可以做到这一点?我正在使用 R 的 solrium 包。

这可以被认为是一个坏主意吗?有什么方法可以锁定核心,这样在添加版本文档后就不能再进行更改了吗?我确实有一个自定义的 schema.xml,但除此之外这是一个非常普通的 Solr 设置。


示意图

select?q=medlabel%3Aacetaminophen

得到

  "responseHeader":{
    "status":0,
    "QTime":0,
    "params":{
      "q":"medlabel:acetaminophen"}},
  "response":{"numFound":4269,"start":0,"docs":[
      {
        "id":"http://purl.bioontology.org/ontology/RXNORM/161",
        "medlabel":["acetaminophen"],
        "tokens":["acetaminophen"],
        "definedin":["http://purl.bioontology.org/ontology/RXNORM/"],
        "employment":["IN"],
        "_version_":1674388636888465414},
      {
        "id":"http://purl.obolibrary.org/obo/CHEBI_46195",
        "medlabel":["acetaminophen"],
        "tokens":["4-acetamidophenol",
          "acetaminophen",
          "apap",
          "panadol",
          "paracetamol",
          "tylenol"],
        "definedin":["http://purl.obolibrary.org/obo/chebi.owl"],
        "employment":["active_ingredient"],
        "_version_":1674388639675580445},
      {
        "id":"http://purl.bioontology.org/ontology/RXNORM/1006970",
        "medlabel":["acetaminophen / dimenhydrinate"],
        "tokens":["/",
          "acetaminophen",
          "dimenhydrinate"],
        "definedin":["http://purl.bioontology.org/ontology/RXNORM/"],
        "employment":["MIN"],
        "_version_":1674388635062894610}

等等

将内容编入索引后,您可以将集合设置为只读模式 using MODIFYCOLLECTION。这将有效地为您提供一个不允许任何更新的 read-only 集合。

我对您的其他案例的建议是让该字段出现在每个文档中,而不是作为单独的文档(当然,这也可以)。但是,如果您的文档数量非常,请添加一个包含您需要的元数据的单独文档。

但是,您可以使用MODIFYCOLLECTION将属性附加到集合本身:

The attributes that can be modified are:

  • other custom properties that use a property. prefix

因此您可以将 property.client_versionproperty.populated_datetime 属性添加到集合本身,然后如果需要,它们将在您的集群中正确复制。该集合还有一个可用的最后索引更新时间,但这可能是特定于节点的(因为提交可能发生在每个节点上的不同时间范围内)。它不会让你附加客户端版本。