Получение точной аналитики solr с нескольких серверов solr, содержащих дубликаты - PullRequest
0 голосов
/ 28 марта 2019

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

Есть ли способ использовать существующую инфраструктуру solr, например, Solr Cloud или Solr распределенных запросов и решить мою проблему?

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

В настоящее время во время поиска, когда мы запрашиваем записи, например, 1-25, клиент javascript отправляет поисковые запросы на каждый сервер solr, к которому у пользователя есть доступ, для записей 1-25. Устраняет дубликаты, сортирует и представляет записи 1-25. Если вы переходите к записям, например 26-50, он выбирает записи 26-50 из каждого источника, сливается с ранее извлеченными записями, удаляет дубликаты, сортирует и представляет записи 26-50.

Поиск работает так же, как в gmail и yahoo mail (хорошо, потоковой передачи нет, и вместо бесконечной прокрутки у него старый добрый пейджинг :). Но это работает, и это очень быстро!

Однако пользователи запрашивают сложную аналитику, такую ​​как граненые запросы, и в этом решении отсутствует даже самая простая аналитика (например, общее количество найденных документов). Он не может определить общее количество документов, удовлетворяющих условиям поиска (возможно, миллионы документов), если только все записи не будут загружены клиенту, а дубликаты не будут удалены.

Есть, например, способ связать серверы в бэкэнде, чтобы пользователи могли получать результаты только со своего сервера отдела (но сервер отдела может отправлять фоновые запросы большему количеству серверов в соответствии с разрешениями пользователя), а затем устранять дубликаты. Я кратко посмотрел в облаке Solr, но кажется, что он распространяет запись только в одном месте. Но в нашей системе нам необходимо (из-за сложных требований бизнеса / безопасности) хранить записи на произвольном количестве серверов отдела и тематических серверов :(

Я не хочу изобретать велосипед. Есть ли решение, подобное облаку Solr или распределенные запросы Solr, или даже коммерческое решение, которое решает мою проблему? Есть какие-нибудь ссылки от кого-то, кто сталкивался с подобной проблемой?

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