A problem with a "probably dumb" index in a graph that I created for an experiment was the performance of getAllRelationships on that machine (it was a very large graph with all nodes being indexed).
It was a mapping from long values to nodes, my simplistic approach just chopped the long values into chunks of 3 digits and used those 3 digits as relationship-types (i.e. 1000 additional rel-types). to form a tree which pointed to the node in question at the end. Will have to investigate that further. Am 14.06.2011 um 23:43 schrieb Peter Neubauer: > Craig, > the autoindexing is one step in this direction. The other is to enable > the Spatial and other in-graph indexes like the graph-collections > (timeline etc) at all to be treated like normal index providers. When > that is done (will talk to Mattias who is coming back from vacation > tomorrow on that), we are in a position to think about more complex > autoindex providers. > > Also, the possibility to treat Neo4j Spatial and other graph > structures as index providers, would hook into the index framework and > expose things to higher level queries like Cypher and Gremlin, e.g. > combining a spatial bounding box geometry search with a graph > traversal for suitable properties that are less than 2 kilometers from > the nearest school, sorting the results, returning only price and lat > as columns, the 3 topmost hits. > > START geom = (index:spatial:'BBOX(the_geom, -90, 40, -60, 45)') > MATCH (geom)-->(fast), (fast)-[r, :NEAR]-(school) > WHERE fast.roooms>4 AND school.classes>4 AND r.length<2return > fast.pic?, fast.lon?, fast.lat? > SORT BY fast.price, fast.lat^ > SLICE 3 > > So, I think the next step is to make in-graph indexing structures plug > into the index framework, and then into autoindexing :) > > > Cheers, > > /peter neubauer > > GTalk: neubauer.peter > Skype peter.neubauer > Phone +46 704 106975 > LinkedIn http://www.linkedin.com/in/neubauer > Twitter http://twitter.com/peterneubauer > > http://www.neo4j.org - Your high performance graph database. > http://startupbootcamp.org/ - Ă–resund - Innovation happens HERE. > http://www.thoughtmade.com - Scandinavia's coolest Bring-a-Thing party. > > > > On Tue, Jun 14, 2011 at 5:49 PM, Craig Taverner <cr...@amanzi.com> wrote: >> This is great news. >> >> Now I'm really curious about the next step, and that is allowing indexes >> other than lucene. For example, the RTree index in neo4j-spatial was never >> possible to wrap behind the normal index API, because that was designed only >> for properties of nodes (and relationships), but the RTree is based on >> something completely different (complete spatial geometries). However, the >> new auto-indexing feature implies that any node can be added to an index >> without the developer needing to know anything about the index API. Instead >> the index needs to know if the node is appropriate for indexing. This is >> suitable for both lucene and the RTree. >> >> So what I'd like to see is that when configuring auto-indexing in the first >> place, instead of just specifying properties to index, specify some indexer >> implementation that can be created and run internally. For example, perhaps >> you pass the classname of some class that implements some necessary >> interface, and then that is instantiated, passed config properties, and used >> to index new or modified nodes. One method I could imagine this interface >> having would be a listener for change events to be evaluated for whether or >> not the index should be activated for a node change. For the lucene property >> index, this method would return true if the property exists on that node. >> For the RTree this method would return true if the node contained the >> meta-data required for neo4j-spatial to recognize it as a spatial type? >> Alternatively just an index method that does nothing when the nodes are not >> to be indexed, and indexes when necessary? >> >> So, are we now closer to having this kind of support? >> >> On Tue, Jun 14, 2011 at 11:30 PM, Chris Gioran < >> chris.gio...@neotechnology.com> wrote: >> >>> Good news everyone, >>> >>> A request that's often come up on the mailing list is a mechanism for >>> automatically indexing properties of nodes and relationships. >>> >>> As of today's SNAPSHOT, auto-indexing is part of Neo4j which means nodes >>> and relationships can now be indexed based on convention, requiring >>> far less effort and code from the developer's point of view. >>> >>> Getting hold of an automatic index is straightforward: >>> >>> AutoIndexer<Node> nodeAutoIndexer = graphDb.index().getNodeAutoIndexer(); >>> AutoIndex<Node> nodeAutoIndex = nodeAutoIndexer.getAutoIndex(); >>> >>> Once you've got an instance of AutoIndex, you can use it as a read-only >>> Index<Node>. >>> >>> The AutoIndexer interface also supports runtime changes and >>> enabling/disabling the auto indexing functionality. >>> >>> To support the new features, there are new Config >>> options you can pass to the startup configuration map in >>> EmbeddedGraphDatabase, the most important of which are: >>> >>> Config.NODE_AUTO_INDEXING (defaults to "false") >>> Config.RELATIONSHIP_AUTO_INDEXING (defaults to "false") >>> >>> If set to "true" (independently of each other) these properties will >>> enable auto indexing functionality and at the successful finish() of >>> each transaction, all newly added properties on the primitives for which >>> auto indexing is enabled will be added to a special AutoIndex (and >>> deleted or changed properties will be updated accordingly too). >>> >>> There are options for fine grained control to determine >>> properties are indexed, default behaviors and so forth. For example, by >>> default all properties are indexed. If you want only properties "name" and >>> "age" for Nodes and "since" and "until" for Relationships >>> to be auto indexed, simply set the initial configuration as follows: >>> >>> Config.NODE_KEYS_INDEXABLE = "name, age"; >>> Config.RELATIONSHIP_KEYS_INDEXABLE="since, until"; >>> >>> For the semantics of the auto-indexing operations, constraints and more >>> detailed examples, see the documentation available at >>> >>> http://docs.neo4j.org/chunked/1.4-SNAPSHOT/auto-indexing.html >>> >>> We're pretty excited about this feature since we think it'll make your >>> lives >>> as developers much more productive in a range of use-cases. If you're >>> comfortable with using SNAPSHOT versions of Neo4j, please try it out >>> and let us know what you think - we'd really value your feedback. >>> >>> If you're happier with using packaged milestones then this feature >>> will be available from 1.4 M05 in a couple of weeks from now. >>> _______________________________________________ >>> Neo4j mailing list >>> User@lists.neo4j.org >>> https://lists.neo4j.org/mailman/listinfo/user >>> >> _______________________________________________ >> Neo4j mailing list >> User@lists.neo4j.org >> https://lists.neo4j.org/mailman/listinfo/user >> > _______________________________________________ > Neo4j mailing list > User@lists.neo4j.org > https://lists.neo4j.org/mailman/listinfo/user _______________________________________________ Neo4j mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user