说,而不是文件我有我需要存储在Lucene索引中的小树。我该如何去做呢?如何将树数据存储在Lucene/Solr/Elasticsearch索引或NoSQL数据库中?
在树的示例节点:
class Node
{
String data;
String type;
List<Node> children;
}
在上述节点中的“数据”成员变量是字的空间分隔的字符串,以使得需要进行全文检索。 “类型”成员变量只是一个单词。
搜索查询将是一棵树本身,将搜索每个节点中的数据和类型以及匹配树的结构。在针对子节点进行匹配之前,查询必须首先匹配父节点数据和类型。数据值的近似匹配是可以接受的。
索引这类数据的最佳方法是什么?如果Lucene不直接支持索引这些数据,那么可以通过Solr或Elasticsearch来完成吗?
我快速浏览了neo4j,但它似乎将整个图存储在数据库中,而不是大型集合(例如数十亿或数万亿)的小型树结构。或者我的理解错了?
另外,是不是基于Lucene的NoSQL解决方案更适合这个?
您在搜索时发现了什么?如果您将NodeB作为NodeA的子节点,并且NodeB具有文本FOO,则在搜索FOO时,是否要返回NodeB或NodeA? – sbridges 2012-04-02 02:32:53
查询将与树结构和树数据匹配。因此,如果NodeA中的数据已经匹配,那么NodeB中FOO的出现将构成完全匹配。 – 2012-04-02 02:40:33
你是说FOO必须在NodeA和NodeB中?或者该类型必须在NodeA中匹配,但您不关心在NodeB中是否匹配类型。 – sbridges 2012-04-02 02:44:41