Thank you, I was just now able to reproduce this!

2014-03-17 11:28 GMT+01:00 Sotiris Beis <sot.b...@gmail.com>:

> Hi Mattias,
>
> here is some more details:
>
> - The function to create the graph
> public void createGraphForMassiveLoad(String dbPath) {
> System.out.println("Creating Neo4j Graph Database for massive load . . .
> .");
> Map<String, String> config = new HashMap<String, String>();
> config.put("cache_type", "none");
> config.put("use_memory_mapped_buffers", "true");
> config.put("neostore.nodestore.db.mapped_memory", "200M");
> config.put("neostore.relationshipstore.db.mapped_memory", "1000M");
> config.put("neostore.propertystore.db.mapped_memory", "250M");
> config.put("neostore.propertystore.db.strings.mapped_memory", "250M");
> inserter = BatchInserters.inserter(dbPath, config);
> indexProvider = new LuceneBatchInserterIndexProvider(inserter);
> nodes = indexProvider.nodeIndex("nodes", MapUtil.stringMap("type",
> "exact"));
> }
>
> - The code to load the data
> public void createGraph(String datasetDir) {
> System.out.println("Loading data in massive mode in Neo4j database . . .
> .");
>
> inserter.createDeferredSchemaIndex(Neo4jGraphDatabase.NODE_LABEL).on("nodeId").create();
> try {
> BufferedReader reader = new BufferedReader(new InputStreamReader(new
> FileInputStream(datasetDir)));
> String line;
> int lineCounter = 1;
> // Map<String, Object> properties;
> // IndexHits<Long> cache;
> long srcNode, dstNode;
> while((line = reader.readLine()) != null) {
> if(lineCounter > 4) {
> String[] parts = line.split("\t");
>  srcNode = getOrCreate(parts[0]);
> dstNode = getOrCreate(parts[1]);
>  inserter.createRelationship(srcNode, dstNode,
> Neo4jGraphDatabase.RelTypes.SIMILAR, null);
> }
> lineCounter++;
> }
> reader.close();
> }
> catch (IOException e) {
> e.printStackTrace();
> }
> nodes.flush();
> }
>  private long getOrCreate(String value) {
> Long id = cache.get(Long.valueOf(value));
> if(id == null) {
> Map<String, Object> properties = MapUtil.map("nodeId", value);
> id = inserter.createNode(properties, Neo4jGraphDatabase.NODE_LABEL);
> cache.put(Long.valueOf(value), id);
> nodes.add(id, properties);
> }
> return id;
> }
>
> - The dataset I made the tests:
> http://snap.stanford.edu/data/email-Enron.html
>
> Unfortunately the database is not available right now, but it's pretty
> easy to reproduce with the above code.
>
> Thanks,
> Sotiris
>
>
> Τη Κυριακή, 16 Μαρτίου 2014 4:48:16 μ.μ. UTC+2, ο χρήστης Mattias Persson
> έγραψε:
>>
>> Yup, it's probably a regression introduced in the recent store format
>> changes. I'd love to track this and be able to reproduce it. How were the
>> relationships added to the node? Distribution of types/directions and also
>> in which order they were added. Could you provide detailed information
>> about that, or provide the database zipped up to me directly (
>> mat...@neotechnology.com) ?
>>
>> Thanks in advance
>>
>>
>> 2014-03-13 12:26 GMT+01:00 Sotiris Beis <sot....@gmail.com>:
>>
>>>  Ok, can you suggest me another temporary solution?
>>>
>>>
>>> On 03/13/2014 01:24 PM, Michael Hunger wrote:
>>>
>>> Thanks for the feedback. Could be related to the changes in the store
>>> format for heavily connected nodes.
>>>
>>>  We'll investigate.
>>>
>>>     Cheers,
>>>
>>>  Michael
>>>
>>>  ----
>>> (michael <http://twitter.com/mesirii>)-[:SUPPORTS]->(*YOU*)-[:USE]->(
>>> Neo4j <http://neo4j.org>)
>>> Learn Online <http://neo4j.org/learn/online_course>, 
>>> Offline<http://www.neo4j.org/events> or
>>> Read a Book <http://graphdatabases.com> (in Deutsch<http://bit.ly/das-buch>
>>> )
>>> We're trading T-shirts for cool Graph Models <http://bit.ly/graphgist>
>>>
>>>
>>>
>>>  Am 13.03.2014 um 12:22 schrieb Sotiris Beis <sot....@gmail.com>:
>>>
>>>  Which version of Neo4j are you using?
>>>
>>> I use neo4j-2.1.0-M01
>>>
>>>  You use  a Set which elminates duplicates. You probably have duplicate
>>> neighbourId's that are only 100 distinct ones.
>>>
>>> That was my first thought, but I cheched it. There are no dublicates.
>>> Why do you think the result is different when I use this test line
>>>
>>> System.out.println(IteratorUtil.count(n.getRelationships(Direction.
>>> OUTGOING)));
>>>
>>> before the iteration of the relationships?
>>>
>>> n 03/13/2014 01:00 PM, Michael Hunger wrote:
>>>
>>> Which version of Neo4j are you using?
>>>
>>>  You use  a Set which elminates duplicates. You probably have duplicate
>>> neighbourId's that are only 100 distinct ones.
>>>
>>>  And you close the transaction twice. It is an auto-closable resource
>>> so you can remove your manual tx.close() line.
>>>
>>>    Cheers,
>>>
>>>  Michael
>>>
>>>  ----
>>> (michael <http://twitter.com/mesirii>)-[:SUPPORTS]->(*YOU*)-[:USE]->(
>>> Neo4j <http://neo4j.org/>)
>>> Learn Online <http://neo4j.org/learn/online_course>, 
>>> Offline<http://www.neo4j.org/events> or
>>> Read a Book <http://graphdatabases.com/> (in Deutsch<http://bit.ly/das-buch>
>>> )
>>> We're trading T-shirts for cool Graph Models <http://bit.ly/graphgist>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>  Am 13.03.2014 um 11:21 schrieb Sotiris Beis <sot....@gmail.com>:
>>>
>>>  I have the following case study. I want to get the neighbors of the
>>> certain node. My function is this one:
>>>  public Set<Integer> getNeighborsIds(int nodeId) {
>>>  Set<Integer> neighbours = new HashSet<Integer>();
>>>  try (Transaction tx = neo4jGraph.beginTx()) {
>>>  Node n = nodeIndex.get("nodeId", nodeId).getSingle();
>>>  for(Relationship relationship : n.getRelationships(Direction.OUTGOING))
>>> {
>>>  Node neighbour = relationship.getEndNode();
>>>  String neighbourId = (String)neighbour.getProperty("nodeId");
>>>  neighbours.add(Integer.valueOf(neighbourId));
>>>  }
>>>  tx.success();
>>>  tx.close();
>>>  }
>>>  return neighbours;
>>>  }
>>>
>>> I know that this node has 255 neighbors but this function return only
>>> 100 nodes. When I put this line
>>>   System.out.println(IteratorUtil.count(n.getRelationships(Direction.
>>> OUTGOING)));
>>>
>>>
>>>   4 and 5 line the function returns 255 neighbors. The most strange is
>>> that the above function prints out the value 100. Is this a bug or can
>>> anyone explain this to me?
>>>
>>>  Thanks,
>>> Sotiris
>>>
>>>  --
>>> You received this message because you are subscribed to the Google
>>> Groups "Neo4j" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to neo4j+un...@googlegroups.com.
>>>
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>>
>>>  --
>>> You received this message because you are subscribed to a topic in the
>>> Google Groups "Neo4j" group.
>>> To unsubscribe from this topic, visit https://groups.google.com/d/
>>> topic/neo4j/stHamJpQSBk/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to
>>> neo4j+un...@googlegroups.com.
>>>
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>>
>>>
>>>  --
>>> You received this message because you are subscribed to the Google
>>> Groups "Neo4j" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to neo4j+un...@googlegroups.com.
>>>
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>>
>>>  --
>>> You received this message because you are subscribed to a topic in the
>>> Google Groups "Neo4j" group.
>>> To unsubscribe from this topic, visit https://groups.google.com/d/
>>> topic/neo4j/stHamJpQSBk/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to
>>> neo4j+un...@googlegroups.com.
>>>
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>>
>>>  --
>>> You received this message because you are subscribed to the Google
>>> Groups "Neo4j" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to neo4j+un...@googlegroups.com.
>>>
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>
>>
>> --
>> Mattias Persson, [mat...@neotechnology.com]
>> Hacker, Neo Technology
>> www.neotechnology.com
>>
>  --
> You received this message because you are subscribed to the Google Groups
> "Neo4j" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to neo4j+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>



-- 
Mattias Persson, [matt...@neotechnology.com]
Hacker, Neo Technology
www.neotechnology.com

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

Reply via email to