說,而不是文件我有我需要存儲在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