1. I have created issue for countEdges() in OrientVertex 
https://github.com/orientechnologies/orientdb/issues/3040
2. Mine is not lightweight edges. Becuase, I have 1 or 2 properties in Edges
3. In the query (select from E where out = ? and in = ? limit 1), how 
should I give the argument. is it line startOrientVertex.getId().toString() 
and endOrientVertex.getId().toString()?
4. I used the following code to create composite index for out and in...

g.createKeyIndex("key", Edge.class, new Parameter("class", "metoptp"), new 
Parameter("type", "unique_hash_index")); //This index is for uniqueKey
System.out.println("e index created");
 OrientEdgeType edgeType = g.getEdgeType("metoptp");
OIndex<?> createIndex = edgeType.createIndex("out_in", 
OClass.INDEX_TYPE.UNIQUE, "out", "in");

Here, I am getting the below Exception

Exception in thread "main" 
com.orientechnologies.orient.core.index.OIndexException: Index with name : 
'out_in' cannot be created on class : 'metoptp' because field: 'out' is 
absent in class definition.
at 
com.orientechnologies.orient.core.metadata.schema.OClassImpl.createIndex(OClassImpl.java:1418)
at 
com.orientechnologies.orient.core.metadata.schema.OClassImpl.createIndex(OClassImpl.java:1391)
at 
com.orientechnologies.orient.core.metadata.schema.OClassImpl.createIndex(OClassImpl.java:1381)
at 
com.orientechnologies.orient.core.metadata.schema.OClassImpl.createIndex(OClassImpl.java:1377)
at 
com.orientechnologies.orient.core.metadata.schema.OClassAbstractDelegate.createIndex(OClassAbstractDelegate.java:291)
at 
com.tinkerpop.blueprints.impls.orient.OrientElementType.access$301(OrientElementType.java:35)
at 
com.tinkerpop.blueprints.impls.orient.OrientElementType$4.call(OrientElementType.java:80)
at 
com.tinkerpop.blueprints.impls.orient.OrientElementType$4.call(OrientElementType.java:77)
at 
com.tinkerpop.blueprints.impls.orient.OrientBaseGraph.executeOutsideTx(OrientBaseGraph.java:1488)
at 
com.tinkerpop.blueprints.impls.orient.OrientElementType.createIndex(OrientElementType.java:77)
at adi.orientdb.eval.OTester.setFactory(OTester.java:142)
at adi.orientdb.eval.OTester.write(OTester.java:157)
at adi.orientdb.eval.OTester.main(OTester.java:44)




On Thursday, November 6, 2014 7:38:46 PM UTC+5:30, Lvc@ wrote:
>
> Hi Adithyan,
> The idea of supporting a countEdges() in OrientVertex is good. Could you 
> create a new issue for that?
>
> Do you have lightweight edges between vertices or regular ones? Are 
> regulars if they have at least one property. If yes you could
> do:
>
> select from E where out = ? and in = ? limit 1
>
> This would be fast if you create a composite index on E (or the Edge class 
> you're using) and fields out + in.
>
> Lvc@
>
>
> On 6 November 2014 12:20, Adithyan K <[email protected] <javascript:>> 
> wrote:
>
>> I am using OrientDB-2.0-M2 version.
>>
>> My objective is to identify whether a edge with particular label exists 
>> between a start vertex and end vertex. I am using the following method for 
>> that
>>
>> private boolean existsRelationship(Relationship relationship) throws 
>> Exception
>> {
>> OrientVertex start = getVertex(relationship.getStartNodeUniqueKey());
>> OrientVertex end = getVertex(relationship.getEndNodeUniqueKey());
>> Iterator<Edge> iter = start.getEdges(end, 
>> com.tinkerpop.blueprints.Direction.OUT, relationship.getType()).iterator();
>> return *iter.hasNext();*
>> }
>> I don't know whether this approach is the efficient way to find edge 
>> existence.
>>
>> In this approach, more than 60% of the CPUs time is spend in 
>> iter.hasNext() method. I am attaching the screenshot here. Pls check.
>> Comparing the load of millions of nodes/edges addition, I feel 
>> iter.hasNext() is tooooo expensive.
>>
>> My objective is to find only the existence. For that, getting edges may 
>> not be so efficient, i feel. I am not finding OrientVertex.countEdges() 
>> method that accepts destination OrientVertex.
>>
>> *My Points*
>>
>> 1. Is there any other better way of checking the existence of a edge 
>> given its startnode, end node and label???
>> 2. You can check in the attached screenshot (taken using JMC version 5.4) 
>> whether this iter.hasNext() can be so expensive?
>> 3. If possible, you can give some lazily loadable object in such a way 
>> that hasNext() just checks the size and current Pointer to return true or 
>> false
>> 4. Is it possible to have OrientVertex.countEdges(OrientVertex 
>> destination, Direction direction, String... labels)
>>
>> -- 
>>
>> --- 
>> You received this message because you are subscribed to the Google Groups 
>> "OrientDB" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"OrientDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to