我们正在制定一项建议,为我们的要求寻找合适的搜索引擎。让我解释一下我们的数据结构。它是一种层次结构数据结构。基本上产品细节排列在如下的树中。
层次结构
面包
面包
饼干
面包棒
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万
答案 0 :(得分:1)
我认为这个MongoDB官方文档有你的答案,你必须根据你的使用模式选择:
https://docs.mongodb.com/manual/applications/data-models-tree-structures/
答案 1 :(得分:1)
从Solr 6开始,支持basic graph traversal。这将允许您构建平面文档以实现可发现性和图形遍历,以便在结果中包含父项。