在solr

时间:2016-02-11 12:59:36

标签: mysql join solr

我有一个mysql查询:

select t1.to_step,count(t1.to_step) from tmp t1 left join tmp t3 on 
(t1.to_step = t3.from_step and t1.applicant_id=t3.applicant_id)
where t3.to_step is null group by t1.to_step

我正在尝试使用连接在solr中执行上述操作。我知道像嵌套查询一样加入solr工作但是我无法找到一个正确的方法来获取所有记录,因为我从mysql查询中获取。

以下是我正在使用的:

q: "-_query_:\"{!join from=from_step_s to=to_step_s}from_step_s:[* TO *]\"",

这给了我部分结果。基本上我的solr文档包含字段applicant_idfrom_step_sto_step_s,我想获取文档,其中to_step_sfrom_step_s的联接不会存在于一组特定的applicant_id。我认为问题出在某处,因为applicant_id连接未在solr查询中完成(我不知道该怎么做),因为一个文档的from_step_sto_step_s匹配具有不同applicant_id的其他文档。

1 个答案:

答案 0 :(得分:2)

您的问题是基于两个字段(每边)的连接。

简短回答:你不能这样做。

JoinQuery的主要逻辑位于org.apache.solr.search.JoinQuery.JoinQueryWeight.getDocSet()。正如您将看到的,没有使用存储的字段或搜索,您可以从一个字段更改为两个字段。

Erick Erickson回答:

  

你不应该这样做。

Solr生活在非正常化之中。为什么不添加一个新字段并连接旧字段?为什么不在索引时使用sql join并将所需信息直接添加到索引中?