Hello,
The new Neo4j M2 release supports Edge (Relationship) indexing. See:
http://components.neo4j.org/neo4j-examples/1.2.M02/apidocs/org/neo4j/graphdb/index/IndexManager.html#existsForNodes%28java.lang.String%29
With next release of Blueprints, Vertex/Node and Edge/Relationship indexing
will be possible through Neo4jGraph in Blueprints.
Hope that clears things up,
Marko
http://markorodriguez.com
http://pipes.tinkerpop.com
On Oct 26, 2010, at 11:19 AM, Walaa Eldin Moustafa wrote:
> Thank you for this useful information. I understood that Neo4j
> implements the Lucene index which supports node indexing only but not
> edge indexing. Also, from what I understand from the Blueprints API,
> it can support both node and edge indexing, and it also supports Neo4j
> as an underlying implementation. Does that mean that by using the
> Blueprints API, we can have support for Neo4j edge indexing?
>
> Thanks,
> Walaa.
>
>
> On Tue, Oct 26, 2010 at 12:47 PM, Marko Rodriguez <[email protected]>
> wrote:
>> Hi everyone,
>>
>> *** I've included the Neo4j users group in the mailing in case they have any
>> thoughts on the matter. ***
>>
>> So these are the classes currently associated with Indexing in the next
>> release of Blueprints [ http://blueprints.tinkerpop.com ]. Much of this was
>> inspired by the multi-indexing framework provided in the latest Neo4j. After
>> a presentation of the Blueprints interfaces, a discussion ensues.
>>
>> public interface IndexableGraph extends Graph {
>> public <T> Index<T> acquireIndex(String indexName, Class<T> indexClass);
>> public Iterable<Index> getIndices();
>> public void dropIndex(String indexName);
>> }
>>
>> public interface Index<T> {
>> public String getIndexName();
>> public Class<T> getIndexClass();
>> public void put(String key, Object value, T object);
>> public Iterable<T> get(String key, Object value);
>> public void remove(String key, Object value, T object);
>> }
>>
>> public interface AutomaticPropertyIndex<T> extends Index<T> {
>> public void addAutoIndexKey(String key);
>> public void removeAutoIndexKey(String key);
>> public Set<String> getAutoIndexKeys();
>> }
>>
>> A graph (e.g. Neo4j, OrientDB, TinkerGraph, etc.) can implement
>> IndexableGraph (analogous to TransactionalGraph, but for indices as opposed
>> to transactions). Indices can be created and retrieved (acquireIndex(),
>> getIndices()) and dropped (dropIndex()) through the main graph class. Every
>> index maintains standard get/put/remove methods as well as their String name
>> and the class type that they index. For Neo4j, these are <? extends
>> PropertyContainer> type indices. For OrientDB and TinkerGraph, any Java
>> object (serializable for OrientDB) can be stored in an Index. Finally, to
>> maintain the "user friendly" nature of Blueprints, there is an
>> AutomaticPropertyIndex interface that can be used if so desired. This is
>> like TransactionalGraph.Mode.AUTOMATIC, but for automatically indexing
>> vertices/edges for the user. An AutomaticPropertyIndex will automatically
>> maintain an index of your vertices/edges as you add, remove, update
>> properties on those vertices/edges.
>>
>> For those familiar with Blueprints 0.2 and the past single-index model, the
>> only difference is now a graph can have multiple indices. This will incur
>> some minor changes to Gremlin and will be discussed in a later email.
>>
>> I've already implemented this for Neo4j and TinkerGraph to get "a feel" for
>> the API and so far its feeling fine. There are a few oddities that need to
>> be thought out (e.g. unique naming for indices, etc.). Thoughts are more
>> than welcome.
>>
>> Take care,
>> Marko.
>>
>> http://markorodriguez.com
>> http://gremlin.tinkerpop.com
>>
>>
>>
>> _______________________________________________
>> Neo4j mailing list
>> [email protected]
>> https://lists.neo4j.org/mailman/listinfo/user
>>
> _______________________________________________
> Neo4j mailing list
> [email protected]
> https://lists.neo4j.org/mailman/listinfo/user
_______________________________________________
Neo4j mailing list
[email protected]
https://lists.neo4j.org/mailman/listinfo/user