【发布时间】:2014-04-02 07:59:19
【问题描述】:
我使用数据导入处理程序索引了一个表(obs),并且一切都认为很好。
但是当我尝试添加另一个实体并索引表(表单)时,没有任何索引,甚至是 obs 表。
我的 data-config.xml:
<document>
<entity name="obs"
query="SELECT o.uuid as id, obs_id, person_id, obs_datetime, obs_group_id, cn1.name as concept_name,
cn2.name as coded, value_boolean, value_datetime, value_numeric, value_text
FROM openmrs.obs o
inner join (SELECT * FROM openmrs.concept_name c WHERE c.locale = 'en' AND concept_name_type = 'FULLY_SPECIFIED') as cn1 on cn1.concept_id = o.concept_id
LEFT join (SELECT * FROM openmrs.concept_name c WHERE c.locale = 'en' AND concept_name_type = 'FULLY_SPECIFIED') as cn2 on cn2.concept_id = o.value_coded
WHERE person_id='${dataimporter.request.personId}' AND o.voided=0 AND cn1.voided=0"
deltaImportQuery="SELECT o.uuid as id, obs_id, person_id, obs_datetime, obs_group_id, cn1.name as concept_name,
cn2.name as coded, value_boolean, value_datetime, value_numeric, value_text
FROM openmrs.obs o
inner join (SELECT * FROM openmrs.concept_name c WHERE c.locale = 'en' AND concept_name_type = 'FULLY_SPECIFIED') as cn1 on cn1.concept_id = o.concept_id
LEFT join (SELECT * FROM openmrs.concept_name c WHERE c.locale = 'en' AND concept_name_type = 'FULLY_SPECIFIED') as cn2 on cn2.concept_id = o.value_coded
WHERE o.uuid='${dih.delta.id}' AND o.voided=0 AND cn1.voided=0"
deltaQuery="select o.uuid as id from openmrs.obs o
inner join concept_name cn on cn.concept_id = o.concept_id
where person_id='${dataimporter.request.personId}'
AND o.voided=0 AND cn.voided=0
AND o.date_created > '${dataimporter.request.lastIndexTime}'"
deletedPkQuery="select o.uuid as id from openmrs.obs o
inner join concept_name cn on cn.concept_id = o.concept_id
where person_id='${dataimporter.request.personId}'
AND (o.voided=1 OR cn.voided=1) AND o.date_voided > '${dataimporter.request.lastIndexTime}'"
>
</entity>
<entity name="forms"
query="SELECT f.uuid as form_uuid, form_id, f.name as form_name, date_created, et.name as encounter_type_name
FROM openmrs.form f
INNER JOIN openmrs.encounter_type et ON et.encounter_type_id = f.encounter_type
WHERE f.retired = 0"
deltaImportQuery="SELECT f.uuid as form_uuid, form_id, f.name as form_name, date_created, et.name as encounter_type_name
FROM openmrs.form f
INNER JOIN openmrs.encounter_type et ON et.encounter_type_id = f.encounter_type
WHERE f.uuid='${dih.delta.id}' AND f.retired = 0"
deltaQuery="select f.uuid as form_uuid from openmrs.form f
INNER JOIN openmrs.encounter_type et ON et.encounter_type_id = f.encounter_type
where f.retired = 0
AND f.date_created > '${dataimporter.request.lastIndexTime}'"
deletedPkQuery="select f.uuid as form_uuid from openmrs.form f
INNER JOIN openmrs.encounter_type et ON et.encounter_type_id = f.encounter_type
where f.retired = 0
AND f.date_voided > '${dataimporter.request.lastIndexTime}'"
>
</entity>
</document>
schema.xml:
<field name="id" type="string" indexed="true" stored="true"
required="true" />
<field name="meta" type="boolean" indexed="true" stored="false"
required="false" />
<field name="obs_id" type="int" indexed="true" stored="true"
required="false" />
<field name="person_id" type="int" indexed="true" stored="true"
required="false" />
<field name="concept_name" type="string" indexed="true" stored="true"
required="false" />
<field name="obs_datetime" type="date" indexed="true" stored="true"
required="false" />
<field name="value_boolean" type="text_general" indexed="true"
stored="false" required="false" />
<field name="value_datetime" type="text_general" indexed="true" stored="false"
required="false" />
<field name="obs_group_id" type="int" indexed="true" stored="true"
required="false" />
<field name="value_numeric" type="text_general" indexed="true" stored="false"
required="false" />
<field name="coded" type="string" indexed="true" stored="false"
required="false" />
<field name="value_text" type="text_general" indexed="true"
stored="false" required="false" />
<field name="form_uuid" type="string" indexed="true" stored="true"
required="false" />
<field name="form_id" type="int" indexed="true" stored="true"
required="false" />
<field name="form_name" type="text_general" indexed="true" stored="true"
required="false" />
<field name="encounter_type_name" type="text_general" indexed="true" stored="true"
required="false" />
<field name="date_created" type="date" indexed="true" stored="true"
required="false" />
有人知道问题出在哪里吗?查询很好。
我正在使用 solrj 版本 4.3.1。
谢谢。
【问题讨论】:
-
日志中有什么可疑的地方吗?
-
是的。实际上,此信息没有说明您的问题。我们无法检查此查询。可能这是因为您没有从第二个表中选择任何内容作为 id 字段。
-
您对每个要编入索引的条目都有唯一的 ID 吗?如果没有,索引过程可能会默默地忽略新文档。根据经验,每个索引文档始终有一个唯一的 ID。
-
如何告诉 Solr 每个表的唯一 ID 是什么?在 schema.xml 我有这一行:
id 。据我所知,只允许将一个字段标记为 uniqueKey。
标签: solr solrj dataimporthandler