2016-05-25 5 views
0

Мы работаем над предложением найти подходящий поиск по нашему требованию. Позвольте мне объяснить структуру данных. Это иерархическая структура данных. В основном детали продукта расположены в дереве, как показано ниже.Поисковые системы для дерева иерархии

иерархическая структура

Хлебобулочные

        Бреадс

                Печенье

                Хлеб Палочки

                Bun & Rolls

Кофе Магазины

        Rolyalty

                Bevarage

                Pakaged еды

Существует потребность поиска придумывают для вышеуказанной структуры дерева. Мы как бы изучаем различные инструменты.

Мы попытались использовать модель вложенных множеств в базе данных mysql. Таким образом, указанное дерево строится как вложенная модель набора с левыми, правыми положениями. Поскольку одновременное количество запросов больше и с учетом масштабируемости, мы переместились больше с точки зрения встроенных/поисковых систем, которые быстрее обрабатывали бы запрос.

Итак, мы начали изучать Apache Solr, построенный на lucene. Мы понимаем, что solr более подходит для поиска плоской структуры, а не для поиска иерархического узла. Но мы попытались создать дерево как плоскую структуру, но мы оказались в нижеописанном усложнении.

плоская структура
L1           L2         L3
пекарных       Бреадс       Печенье
пекарных       Бреадс       гриссини ы
Хлебобулочные       Бреадс       Bun & Рулоны
Кофе Магазины       Rolyalty       Bevarage
Кофе Магазины       Rolyalty       Pakaged еды

выпуск в квартире структура Мы создали эту структуру в Solr и в то время как мы делаем поиск на всех уровнях с «Хлебное», мы в конечном итоге в получении ниже трех записей

Хлебопекарное       хлебов       Печенье
Хлебопекарное       хлеба       Хлеб палочки
Хлебопекарное       хлеба       Bun & Rolls

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

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

Не могли бы вы предложить какие-либо хорошие варианты подхода к вышеупомянутому поиску. в идеале ответ должен быть также деревом ... это похоже на сохранение дерева, и мы сможем искать на основе узла, а также забрать его родителей Neo4j ?. скорее мы обрабатываем результаты поиска. объемы данных будет составлять около 20 млн

ответ

1

Я думаю, что это официальный документ, MongoDB есть свой ответ, который вы должны выбрать на основе ваших моделей использования:

https://docs.mongodb.com/manual/applications/data-models-tree-structures/

+1

Спасибо Tiramisu. Посмотрел на это.Поскольку у нас есть более сложные требования к поиску, мы хотели бы использовать возможности поиска, предоставляемые поисковой системой. – Raju

1

Начиная с Solr 6, там является поддержкой для basic graph traversal. Это позволит вам структурировать плоские документы для обнаружения и обхода графика для включения родителя в результаты.

+0

Спасибо, Александр. Я думаю, это поможет. Возможно, нам придется определять структуру вертикально, а затем иметь родительские ссылки на нее. Пример если мы имеем структуру, подобную этой Node         Родительские Хлебобулочные Хлеба хлебцы – Raju

+0

Модель adjancy определяется здесь - http://mikehillyer.com/articles/managing-hierarchical-data-in -mysql/ pls правильно, если мое понимание неверно – Raju

+0

Так что, если я структурировал данные с этой моделью смежности, тогда я могу использовать анализатор запросов графа с solr, я верю – Raju