Dmi*_*tri 5 java lucene indexing neo4j
这实际上更像是一个Lucene问题,但它是在neo4j数据库的上下文中.
我有一个数据库,它被分为50个左右的节点类型(所以"其他类型的dbs中的"集合"或"表").每个属性都有一个需要索引的属性子集,有些属性名称相同,有些则没有.
搜索时,我总是希望找到特定类型的节点,而不是所有节点.
我可以看到三种组织方式:
每类型一个索引,属性自然映射到索引字段:索引"富", 'id'='1234'.
一个单独的全局索引,每个字段映射到一个属性名称,以区分该类型将其包含为value('id'='foo:1234')的一部分,或者一旦它们被返回就检查它们(我希望重复是非常罕见的).
单个索引,类型是字段名称的一部分:'foo.id'='1234'.
创建后,数据库是只读的.
在便利性,大小/缓存效率或性能方面,其中之一是否有任何好处?
据我所知,对于第一个选项,neo4j将为每种类型创建一个单独的物理索引,这似乎不是最理想的.对于第三个,我最终得到的大多数lucene文档只有一小部分字段,不确定是否会影响任何内容.
单个索引将比几个小索引小,因为某些数据(例如术语词典)将被共享。然而,由于术语词典查找是一个 O(lg(n)) 操作,因此在较大的术语词典中查找可能会慢一些。(如果您有 50 个索引,则只需要 6 (2^6>=50) 次比较,您可能不会注意到任何差异。)
较小索引的另一个优点是操作系统缓存可能会使查询运行得更快。
id我会索引两个不同的字段并type搜索(id:ID AND :TYPE) ,而不是您的选项2和3,type但我不知道neo4j是否可以。
| 归档时间: |
|
| 查看次数: |
2015 次 |
| 最近记录: |