不使用模型的bulbflow选择性标引

2024-06-07 00:19:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我将bulbflow(python)与Neo4j一起使用,并尝试在键的子集上添加一个索引only(目前,只需将名为“name”的键用于可选的基于索引的查找)。在

我不喜欢bulbflow模型(限制性太强),而且我不知道如何在不更改代码的情况下进行选择性索引,因为“autoindex”是一个全局设置——我不知道如何根据键来配置它。在

有人做过这样的事吗?在

-安德鲁


Tags: 代码name模型only情况全局子集neo4j
1条回答
网友
1楼 · 发布于 2024-06-07 00:19:18

{{cd2>你可以通过设置来禁用自动索引。在

https://github.com/espeed/bulbs/blob/master/bulbs/config.py#L62

>>> from bulbs.neo4jserver import Graph
>>> g = Graph()
>>> g.config.autoindex = False
>>> g.vertices.create(name="James")

在上面的示例中,这将导致name属性不会自动索引。在

autoindex设置为False将切换为使用低级客户端的create_vertex()方法,而不是{}方法:

https://github.com/espeed/bulbs/blob/master/bulbs/neo4jserver/client.py#L422

create_indexed_vertex()方法有一个keys参数,可用于选择性索引:

https://github.com/espeed/bulbs/blob/master/bulbs/neo4jserver/client.py#L424

这是灯泡模型使用的低水平client方法。通常不需要显式调用低级客户机方法,但如果需要,则可以通过在键参数中包含属性名称来选择性地索引属性。在

要有选择地索引模型中的属性,只需重写模型定义中的get_index_keys()

https://github.com/espeed/bulbs/blob/master/bulbs/model.py#L383

默认情况下,灯泡模型索引所有特性。如果没有提供键,那么所有属性都会被索引(就像在TinkerPop/Blueprints中)。在

请参见Model\u create()和get_bundle()方法:

为了对泛型顶点和边启用选择性索引,我更新了buzzles通用顶点/边方法,以包含一个_keys参数,您可以在其中提供要索引的属性名(键)列表。在

https://github.com/espeed/bulbs/commit/4fe39d5a76675020286ec9aeaa8e71d58e3a432a

现在,要有选择地索引泛型顶点/边上的属性,可以提供要索引的属性名称列表:

^{pr2}$

在上面的例子中,name属性将为每个顶点编制索引,而{}将为该边编制索引。注意,city和{}将不会被索引,因为这些属性名没有显式地包含在索引键列表中。在

如果g.config.autoindexTrue,而_keys是{}(默认值),那么所有属性都将被索引(就像以前一样)。在

如果g.config.autoindexFalse,而_keys是{},则不会索引任何属性。在

如果_keys显式设置为属性名列表,则只对这些属性进行索引,而不管{}是True还是{}。在

https://github.com/espeed/bulbs/blob/master/bulbs/neo4jserver/client.py#L422

注意:如果您使用的是Neo4j Server、Rexster或Titan Server,那么自动索引的工作原理会有所不同,并且所有图形数据库服务器的索引体系结构在过去几个月一直处于不断变化的状态。似乎所有这些都在从手动索引系统转向自动索引系统。在

对于最近才具备自动索引功能的图形数据库服务器(例如Neo4j服务器),Buzzs通过使用数据库低级手动索引方法的自定义Gremlin脚本启用自动索引:

然而,在Neo4j服务器、TinkerPop/Rexster和Titan服务器中,手动索引已经被弃用,因此bulls0.4索引体系结构将相应地改变。通过预先声明索引键,选择性索引仍然是可能的,就像在SQLcreate table语句中一样。在

顺便说一句:您觉得模型有哪些限制?灯泡模型(实际上是整个库)的设计是灵活的,因此您可以根据需要对其进行修改。在

有关如何定制灯泡型号,请参见灯泡示例:Is there a equivalent to commit in bulbs framework for neo4j

如果你有任何问题请告诉我。在

相关问题 更多 >