solr 的 join 用法
强调一下,solr的 join查询虽然外表看着像mysql的 join查询,但本质其实类似于 mysql的子查询 !
1、同一个core内使用join
{! join from=id to=pid} title:大数据 相当于
select * from table where pid in (
select id from table where title="大数据"
)
先做子查询 “select id from table where title="大数据" , 把 from 后的字段筛选出来 , List<String> ids
再做外层查询, 条件是 to 后的字段 id in ( ids )
2、跨core使用join
此处的跨core不是 solrcloud模式下的,而是一个 solr实例中有多个不同的core
{!fromIndex=A toIndex=B from = id to = docid} title:大数据
此语句外表看着像是
select * from A left join B on A.id =B.docid where A.title = 大数据
其实是:
select * from B where docid in (
select id from A where title = "大数据"
)
注意,solr跨core查询目前好像还无法把两个core的field合并返回。