Gol*_*sar 13 lucene solr neo4j nosql elasticsearch
说而不是文件我有小树,我需要存储在Lucene索引中.我该怎么做呢?
树中的示例节点:
class Node
{
String data;
String type;
List<Node> children;
}
Run Code Online (Sandbox Code Playgroud)
在上面的节点中,"data"成员变量是一个空格分隔的单词串,因此需要全文可搜索."type"成员变量只是一个单词.
搜索查询将是树本身,并且将搜索每个节点中的数据和类型以及用于匹配的树的结构.在匹配子节点之前,查询必须首先匹配父节点数据和类型.可以接受数据值的近似匹配.
索引此类数据的最佳方法是什么?如果Lucene不直接支持索引这些数据,那么这可以由Solr或Elasticsearch完成吗?
我快速浏览了neo4j,但似乎在db中存储了整个图形,而不是大型集合(比如数十亿或数万亿)的小树结构.或者我的理解是错的?
另外,基于非Lucene的NoSQL解决方案是否更适合这种情况?
Mar*_*her 11
另一种方法是在树中存储当前节点的位置的表示.例如,第14个树的第1个第1级节点的第3个第2级节点的第17个叶子表示为014.001.003.017.
假设'treepath'是树位置的字段名称,您将查询'treepath:014*'以查找第14个树中的所有节点和叶子.同样,要查找第14个树的所有子项,您将在"treepath:014.*"上查询.
这种方法的主要问题是移动分支需要在移动的分支之后重新排序每个分支.如果你的树木相对静止,那在实践中可能只是一个小问题.
(我已经看到这种方法称为'路径枚举'或'杜威十进制'表示.)
| 归档时间: |
|
| 查看次数: |
11857 次 |
| 最近记录: |