1
我正在使用Solr数据导入器导入某些类别数据。我不想在父查询中使用左连接,因为它太复杂了,我倾向于在配置中使用嵌套对象查询以保持简单。在solr数据导入器的嵌套实体中处理空值
我有3个一对一的关系feature images
的一个类别。我的问题是,当mediaItemX_id字段中的值为空时,我该如何处理它?我试过下面的嵌套的配置,但是当值为空它的报告无效的SQL因为嵌套查询不打印null
- 它打印空白....
<entity name="category" query="SELECT concat('CATEGORY_', c.id) as docId, c.id, externalIdentifier, name, description, shortDescription, mediaItem1_id, mediaItem2_id, mediaItem3_id, created, lastUpdated, keywords, 'CATEGORY' as docType,
name as autoSuggestField
FROM categories c inner join base_content bc where c.id = bc.id">
<field column="id" name="categoryId" />
<field column="externalIdentifier" name="externalIdentifier" />
<field column="docType" name="docType" />
<field column="name" name="name" />
<field column="description" name="description" />
<field column="shortDescription" name="shortDescription" />
<field column="created" name="created" dateTimeFormat="yyyy-MM-dd'T'HH:mm:ss" />
<field column="lastUpdated" name="lastUpdated" dateTimeFormat="yyyy-MM-dd'T'HH:mm:ss" />
<field column="publishDate" name="publishDate" dateTimeFormat="yyyy-MM-dd'T'HH:mm:ss" />
<field column="archiveDate" name="archiveDate" dateTimeFormat="yyyy-MM-dd'T'HH:mm:ss" />
<field column="autoSuggestField" name="suburbSuggest" />
<field column="keywords" name="keywords" />
<entity name="mediaItem1" query="SELECT uri, title, altText from media where ${category.mediaItem1_id} is not null and id = ${category.mediaItem1_id}">
<field column="uri" name="featureImage1Url" />
<field column="title" name="featureImage1Title" />
<field column="altText" name="featureImage1AltText" />
</entity>
<entity name="mediaItem2" query="SELECT uri, title, altText from media where ${category.mediaItem2_id} is not null and id = ${category.mediaItem2_id}">
<field column="uri" name="featureImage2Url" />
<field column="title" name="featureImage2Title" />
<field column="altText" name="featureImage2AltText" />
</entity>
<entity name="mediaItem1" query="SELECT uri, title, altText from media where ${category.mediaItem3_id} is not null and id = ${category.mediaItem3_id}">
<field column="uri" name="featureImage3Url" />
<field column="title" name="featureImage3Title" />
<field column="altText" name="featureImage3AltText" />
</entity>
</entity>
谢谢,我试过了,但它不工作,与变量中的空白相同的错误 - SELECT uri,title,altText from media {$ category.mediaItem1_id:-1} = id –
我最终在ifnull中使用了父查询,它的工作原理如下:select concat('CATEGORY_',c.id)as docId,c.id,externalIdentifier,name,description,shortDescription,IFNULL(mediaItem1_id,-1)as mediaItem1_id,IFNULL(mediaItem2_id,-1)as作为mediaItem3_id,创建,LASTUPDATED,关键字, '类别' 为DOCTYPE, 名autoSuggestField 从C类内部联接上c.id = bc.id –
@RichardG base_content BC mediaItem2_id,IFNULL(mediaItem3_id,-1)谢谢,如果你发布了这样的话,我会为你的答案投票;-) – dedek