将用户指定的内部版本添加到 Solr 核心?
Add user-specified internal version to Solr core?
我有一个脚本可以将有关药物的信息加载到 Solr 核心中,就像您在 RxNorm 中找到的那样。所有文档都有一个相对恒定的模式。见下文。
我还想给核心添加一个文档,有两个属性:
- 填充核心的日期
- 做人口的软件版本
是否有既定的方法可以做到这一点?我正在使用 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_version
和 property.populated_datetime
属性添加到集合本身,然后如果需要,它们将在您的集群中正确复制。该集合还有一个可用的最后索引更新时间,但这可能是特定于节点的(因为提交可能发生在每个节点上的不同时间范围内)。它不会让你附加客户端版本。
我有一个脚本可以将有关药物的信息加载到 Solr 核心中,就像您在 RxNorm 中找到的那样。所有文档都有一个相对恒定的模式。见下文。
我还想给核心添加一个文档,有两个属性:
- 填充核心的日期
- 做人口的软件版本
是否有既定的方法可以做到这一点?我正在使用 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_version
和 property.populated_datetime
属性添加到集合本身,然后如果需要,它们将在您的集群中正确复制。该集合还有一个可用的最后索引更新时间,但这可能是特定于节点的(因为提交可能发生在每个节点上的不同时间范围内)。它不会让你附加客户端版本。