层次结构树

时间:2016-05-25 16:59:55

标签: mongodb solr neo4j lucene search-engine

我们正在制定一项建议,为我们的要求寻找合适的搜索引擎。让我解释一下我们的数据结构。它是一种层次结构数据结构。基本上产品细节排列在如下的树中。

层次结构

面包

面包

饼干

面包棒

Bun&辊

咖啡商店

Rolyalty

Bevarage

包装食品

上述树结构存在搜索要求。我们正在探索各种工具。

我们已经尝试使用mysql数据库中的嵌套集模型。因此,上面的树被构造为具有左,右位置的嵌套集模型。由于请求的并发数量更多,并且考虑到可扩展性,我们在内存/搜索引擎方面的移动更多,这将更快地处理请求。

所以我们已经开始探索基于lucene构建的Apache Solr。我们知道solr更适合于平面结构搜索而不是层次结构节点搜索。但我们尝试将树创建为扁平结构,但我们最终陷入了下面的复杂情况。

扁平结构
 L1 L2 L3
烘焙面包饼干
烘焙面包面包棒
Bakery Breads Bun&劳斯莱斯
咖啡店Rolyalty Bevarage
咖啡店Rolyalty Pakaged Food

扁平结构问题 我们在Solr中创建了这个结构,当我们使用“Bakery”进行所有级别的搜索时,我们最终得到以下三个记录

面包店面包饼干
烘焙面包面包棒
Bakery Breads Bun&辊

我们的要求 我们的要求是只发送匹配节点及其父节点。当我们使用交叉引用时,只有一个节点将是一个需要发送的节点,即Bakery ...

在我们的案例中,会有大量的记录,我们觉得这种扁平结构可能不是正确的选择。

您能否建议任何好的选择来接近上述搜索。理想情况下,响应也应该是树...就像持久树一样,我们将能够根据节点进行搜索并获取其父节点Neo4j?。而是我们处理搜索结果。数据量约为2000万

2 个答案:

答案 0 :(得分:1)

我认为这个MongoDB官方文档有你的答案,你必须根据你的使用模式选择:

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

答案 1 :(得分:1)

从Solr 6开始,支持basic graph traversal。这将允许您构建平面文档以实现可发现性和图形遍历,以便在结果中包含父项。