2016-05-25 2 views
0

Nous travaillons sur une proposition pour trouver un moteur de recherche approprié à notre exigence. Laissez-moi vous expliquer notre structure de données. C'est une structure de données hiérarchique. Fondamentalement, un produit détails disposés dans un arbre comme le ci-dessous.Moteurs de recherche pour Arbre hiérarchique

Structure hiérarchique

Bakery

        Pains

                Biscuits

                Pain Sticks

                Bun & Rolls

Café-Shops

        Rolyalty

                bevarage

                Pakaged nourriture

Il y a une exigence de recherche à venir pour la structure de l'arbre ci-dessus. Nous explorons différents outils.

Nous avons essayé avec le modèle de jeu imbriqué dans la base de données mysql. L'arbre ci-dessus est donc construit en tant que modèle de jeu imbriqué avec les positions gauche et droite. Étant donné que le nombre de demandes simultanées est plus élevé et compte tenu de l'évolutivité, nous nous sommes déplacés davantage en termes de moteurs de recherche en mémoire qui traiteraient la demande plus rapidement.

Nous avons donc commencé à explorer Apache Solr construit sur Lucene. Nous comprenons que solr est plus approprié pour la recherche de structure plate plutôt que la recherche de nœud de hiérarchie. Mais nous avons essayé de créer l'arbre comme une structure plane, mais nous avons fini dans la complication ci-dessous.

Structure plane
L1           L2         L3
boulangerie       Pains       Biscuits
boulangerie       Pains       de bâton de pain s
Bakery       Breads       Petit pain & Rolls
coffee-shops       Rolyalty       bevarage
coffee-shops       Rolyalty       Pakaged alimentaire

Problème dans l'appartement structure Nous avons créé cette structure en Solr et pendant que nous faisons la recherche à tous les niveaux avec "Boulangerie", on finit à obtenir le dessous de trois dossiers

Bakery       Breads       Biscuits
Boulangerie             Breads pain Sticks
Boulangerie             Breads Petit pain & Rolls

Notre exigence Notre exigence est d'envoyer uniquement le nœud de correspondance et de son parent. Pendant que nous travaillons avec la référence croisée, alors un seul nœud sera celui qui doit être envoyé qui est la boulangerie ...

Dans notre cas, il y aura d'énormes volumes d'enregistrements et nous pensons que cette structure plate pourrait ne pas fonctionner. être bonne option.

Pouvez-vous suggérer de bonnes options pour aborder la recherche mentionnée ci-dessus. Idéalement, la réponse devrait être aussi un arbre ... est-ce comme persister un arbre et nous serons en mesure de rechercher sur la base du nœud et aussi chercher ses parents Neo4j ?. Nous traitons plutôt les résultats de la recherche. les volumes de données seraient environ 20 millions

Répondre

1

A partir de Solr 6, il est un support pour basic graph traversal. Cela vous permettra de structurer des documents plats pour la découverte et la traversée de graphe pour l'inclusion des parents dans les résultats.

+0

Merci Alexandre. Je pense que ça aidera. Il se peut que nous devions définir la structure de façon verticale, puis faire référence au parent. exemple si nous avons la structure comme celle- Noeud         Parent Boulangerie Pains Pain Sticks – Raju

+0

Le modèle adjancy est défini ici - http://mikehillyer.com/articles/managing-hierarchical-data-in -mysql/ pls corriger si ma compréhension n'est pas correcte – Raju

+0

Donc si je structuré les données avec ce modèle de contiguïté, alors je peux utiliser l'analyseur de requête graphique avec solr je crois – Raju