Solr的。如何加入两个单独的查询

时间:2013-01-30 15:08:06

标签: java solr

我想加入两个单独的查询。并显示他们的信息。第一个查询是来自 Canada 的公司,第二个查询是名为 Incremento 的公司。所以我需要运行单独的查询并加入结果信息。

我的架构是:

<entity name="firm" dataSource="jdbc" pk="id"
  query="select * from firm"
  deltaImportQuery="select * from firm where id='${dih.delta.id}'"
      deltaQuery="select id from firm where upd_date &gt; '${dih.last_index_time}'">
    <field column="id" name="id"/>
    <field column="ADDRESS" name="address"/>
    <field column="EMPLOYEE" name="employee"/>
    <field column="NAME" name="name"/>
    <field column="VILLAGE" name="village"/>
    <field column="ZIPCODE" name="zipcode"/>
    <field column="PLACE" name="place"/>
    <entity name="country" pk="id"
    query="select country from country where id='${firm.country}'"
    deltaQuery="select id from country where upd_date > '${dih.last_index_time}'"
    parentDeltaQuery="select id from firm where country=${country.id}">
      <field column="country" name="countryName"/>
    </entity>
  </entity>

怎么做???

1 个答案:

答案 0 :(得分:0)

搜索: -

您可以使用例如

q=name:incremento&fq=location:Canada - 仅在位置为Canada的公司中搜索名称为Incremento的公司

fq=location:Canada&fq=name:Incremento - 使用位置CANADA过滤公司并命名为Incremento

索引: -
您可以在SQL查询中使用OR来处理它,对于来自加拿大的公司和名为Incremento的公司 例如SELECT * FROM FIRMS WHERE COUNTRY='CANADA' OR NAME='INCREMENTO'

OR DIH仅允许标记。你可能有多个根标签。例如

<dataSource driver="..." url="..." user=".." />
    <document name="companies">
        <entity name="firm_canada" dataSource="jdbc" pk="id"
          query="select * from firm"
          deltaImportQuery="select * from firm where id='${dih.delta.id}'"
              deltaQuery="select id from firm where upd_date &gt; '${dih.last_index_time}'">
            <field column="id" name="id"/>
            ....
        </entity>
        <entity name="firm_incremento" dataSource="jdbc" pk="id"
          query="select * from firm where ..."
          deltaImportQuery="select * from firm where id='${dih.delta.id}'"
              deltaQuery="select id from firm where upd_date &gt; '${dih.last_index_time}'">
            <field column="id" name="id"/>
            ....
        </entity>       
    </document>
</dataSource>