gpt4 book ai didi

solr - 如何将树数据存储在 Lucene/Solr/Elasticsearch 索引或 NoSQL 数据库中?

转载 作者:行者123 更新时间:2023-11-29 02:44:41 25 4
gpt4 key购买 nike

假设我有小树而不是文档,我需要将其存储在 Lucene 索引中。我该怎么做?

树中的示例节点:

class Node
{
String data;
String type;
List<Node> children;
}

在上面的节点中,“data”成员变量是一个空格分隔的字符串,因此需要进行全文搜索。 “type”成员变量只是一个单词。

搜索查询本身将是一棵树,并将搜索每个节点中的数据和类型以及树的结构以进行匹配。在匹配子节点之前,查询必须首先匹配父节点的数据和类型。数据值的近似匹配是可以接受的。

索引此类数据的最佳方法是什么?如果 Lucene 不直接支持索引这些数据,那么可以通过 Solr 或 Elasticsearch 来完成吗?

我快速浏览了一下 neo4j,但它似乎将整个图存储在数据库中,而不是大量(比如数十亿或数万亿)小树结构的集合。还是我的理解有误?

此外,基于非 Lucene 的 NoSQL 解决方案是否更适合此问题?

最佳答案

另一种方法是存储当前节点在树中的位置表示。例如,第 14 棵树的第 1 个一级节点的第 3 个二级节点的第 17 个叶子将表示为 014.001.003.017

假设“treepath”是树位置的字段名称,您将查询“treepath:014*”以查找第 14 棵树中的所有节点和叶子。同样,要查找第 14 棵树的所有子树,您将在“treepath:014.*”上查询。

这种方法的主要问题是移动分支需要在移动的分支之后重新排序每个分支。如果您的树是相对静态的,那在实践中可能只是一个小问题。

(我见过这种方法称为“路径枚举”或“杜威十进制”表示法。)

关于solr - 如何将树数据存储在 Lucene/Solr/Elasticsearch 索引或 NoSQL 数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9970193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com