У меня есть MySQL запрос:Replicate Выравнивание по левому краю по нескольким полям в Solr
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
.
Но есть ли способ, по которому я могу перебирать результирующий набор родительского запроса изнутри подзапроса или что-то подобное для итерации по набору результатов? –
Я пытаюсь внедрить статистику .. вот почему требование ... если я предварительно рассчитаю и сохраню статистику, для этого потребуются очень частые обновления .. –
Если время не имеет значения: вы можете создать свой собственный QueryComponent или QParser и работать непосредственно на lucene индекс. Если весь ваш «претендент_ид» со всеми соответствующими DocSet может быть кэширован в основной памяти, вы даже можете подумать о своей собственной версии JoinQuery. –