Solr - 复合Id的问题

时间:2012-10-12 08:35:56

标签: solr

例如我有2个表:table1 = book,table2 = site - > 1本书可以有n个网站。

<entity name="book" dataSource="myDs" pk="id"
        transformer="TemplateTransformer"
        query="SELECT b.id, b.title, s.id, s.number, s.content
                     FROM book b. site s WHERE b.id = s.book">
        <field column="b.id" name="id" />
        <field column="s.id" name="sId" />
        <field column="id" template="${id}_${sId}" ignoreMissingVariables="true" />
    </entity>

为什么这不起作用?我只得到1本书,其中1个网站作为结果,而不是x书与x网站 我只是在字段'id'中没有得到复合键。

3 个答案:

答案 0 :(得分:2)

我最近遇到了类似的问题,以下几点为我解决了这个问题:

  1. 在SQL查询中使用别名来获取不同的列名。请重新检查别名的sytax,因为它可能因数据库而异。
  2. 使用模板转换器或执行子选择(在内部实体上)时,请始终使用entity.COLUMN_NAME_IN_CAPITAL。资本中的列确实让我很难过,直到我偶然发现了其他人建议作为解决方案的解决方案(不幸的是我没有提供此有用信息的帖子的网址)。
  3. 我正在针对Oracle DB做上面的事情。不是100%确定它是否适用于其他数据库但想要共享解决方案。

    以下是尝试使用上述更改重新定义DIH

    <entity name="book" dataSource="myDs" pk="id"
        transformer="TemplateTransformer"
        query="SELECT b.id, b.title, s.id as sid, s.number, s.content
                     FROM book b. site s WHERE b.id = s.book">
        <field column="sid" name="sid" />
        <field column="id" template="${book.ID}_${book.SID}"/>
    </entity>
    

答案 1 :(得分:0)

multivalued = true 添加到schema.xml文件中的id和sId字段。

答案 2 :(得分:0)

是的我删除了索引并将其插入新内容。

我得到了什么:

   <doc>
    <str name="id">1</str>
    <str name="title">Im a title</str>
    <str name="number">1337</str>
   <str name="content">content 23</str>
  </doc>

我想要的是什么:

   <doc>
    <str name="id">1_1</str>
    <str name="title">Im a title</str>
    <str name="number">1337</str>
   <str name="content">content 23</str>
  </doc>

   <doc>
    <str name="id">1_2</str>
    <str name="title">Im a title for 2</str>
    <str name="number">1654654</str>
   <str name="content">ekddsd</str>
  </doc>

我已经尝试更改以下

<field column="id" template="${id}_${sId}" ignoreMissingVariables="true" />

<field column="id" template="${id}_${someOtherField}" ignoreMissingVariables="true" />

并且结果没有改变..看起来像TemplateTransformer不起作用?

修改 在我的日志中找到了一些东西:

Unable to resolve variable: id while parsing expression: ${id}_${sId}
Unable to resolve variable: sId while parsing expression: ${id}_${sId}