Использование графа Solr для прохождения N отношений - PullRequest
1 голос
/ 12 марта 2019

Я исследую, могу ли я использовать существующее хранилище solr для обхода графа.Было бы идеально не дублировать данные в хранилище графиков.Я играл с возможностями потоковой передачи Solr и источником узлов (collectNodes).У меня есть три проблемы с этим, и мне интересно, нашли ли люди решения:

1) получение оригинальных документов, на которые узлы ссылаются со всеми их полями.В конце концов я решил эту проблему, выполнив innerJoin для узлов, возвращаемых collectNodes, и выполняя запрос к «*: *», но это кажется не идеальным.Есть лучший способ сделать это?Еще лучше было бы, если бы я мог делать это как «экспорт», а не как «выбор», чтобы лучше обрабатывать большие объемы данных.Эта проблема небольшая по сравнению с двумя другими, которые кажутся серьезными ошибками в Solr

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

nodes(collection,
search(some search params)
walk="ref->id",
gather="vals")

в этом примере - это выборка из результатов поиска, взятие поля ref в этих документах и ​​поиск всех узлов, которые соответствуют этому, в качествеЯ бы.Это работает, пока ref не становится списком значений.У кого-нибудь был успех, делая эту работу?Простым примером может служить древовидная структура, в которой у вас есть папка с документом, в которой есть многозначное поле, представляющее вложенные папки и файлы.Как бы я прошел это отношение?

3) в этом примере сборка возвращает узлы, представленные полем "vals" на всех узлах, которые получаются в результате обхода.Это также не работает, если это поле многозначно.Кто-нибудь также имел успех с этим?Снова возвращаясь к примеру с файлами и папками, я хочу вернуть все файлы в подпапках выбранной папки.

nodes(collection,
search(collection, q="path:currentFolder", qt="/select", sort="fileId ASC"),
walk="contents->fileId",
gather="contents",
fq="type:file")

Я сделал это так, что могут быть некоторые опечатки, но предпосылка заключается в том, что содержимоеявляются многозначным строковым полем, и у каждого документа, типа "файл" или "папка", есть fileId, на который ссылается поле содержимого.Как бы я это сделал?Нужно ли индексировать эти поля особым образом?

Также я понимаю, что, возможно, есть другие способы выполнить этот запрос с помощью solr.Это всего лишь пример использования обхода графа.

Спасибо!Я действительно борюсь.Существует не так много примеров, даже если это было начиная с solr 6.0.

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