Запрос на объединение двух ядер не работает на Solr 8 - PullRequest
0 голосов
/ 07 мая 2019

Я использую 2 ядра и пытаюсь получить результаты, зависящие от компании, используя запрос Join, но я не смог получить ожидаемый результат.

first core : job (id,title,companyid)
second core : company (id,companyid,companyname)

expected result : title,companyid,companyname

Это запрос, который я использовал.

http://localhost:8983/solr/job/select?q=*:*&fq={!join from=companyid to=companyid fromIndex=company}

1 Ответ

1 голос
/ 07 мая 2019

СОЕДИНЕНИЯ в Solr - это не то же самое, что соединения в обычных базах данных. Объединение не может вернуть поля с обеих сторон объединения , т. Е. Оно может использоваться только для фильтрации результирующего набора по значению, найденному на другой стороне объединения.

В вашем примере вы можете вернуть все названия компаний, которые имеют конкретное название, но вы не можете вернуть оба значения title и companyname в одном ответе (используя функцию объединения).

Для людей, привыкших к SQL, важно отметить, что объединения в Solr на самом деле не эквивалентны объединениям SQL, поскольку никакая информация о соединяемой таблице «из» не переносится в конечный результат. Более подходящей аналогией SQL был бы «внутренний запрос».

Ограничения

Поля или другие свойства документов, к которым присоединяются "из", недоступны для использования при обработке результирующего набора документов "до" (т. Е. Вы не можете вернуть поля в документах "из", как если бы они были многозначное поле на «до» документов)

Не думайте о хранении в базах документов, как это было для нормализованных баз данных. Вместо этого сохраняйте название компании вместе с каждым документом с заголовком, сохраняя все в одном ядре, а не в двух. Ядро не используется в качестве прямой замены стола.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...