我有一个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_id
,from_step_s
和to_step_s
,我想获取文档,其中to_step_s
到from_step_s
的联接不会存在于一组特定的applicant_id
。我认为问题出在某处,因为applicant_id
连接未在solr查询中完成(我不知道该怎么做),因为一个文档的from_step_s
与to_step_s
匹配具有不同applicant_id
的其他文档。
答案 0 :(得分:2)
您的问题是基于两个字段(每边)的连接。
简短回答:你不能这样做。
JoinQuery
的主要逻辑位于org.apache.solr.search.JoinQuery.JoinQueryWeight.getDocSet()。正如您将看到的,没有使用存储的字段或搜索,您可以从一个字段更改为两个字段。
你不应该这样做。
Solr生活在非正常化之中。为什么不添加一个新字段并连接旧字段?为什么不在索引时使用sql join并将所需信息直接添加到索引中?