Я исследую, могу ли я использовать существующее хранилище 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.