We are currently evaluating neo4j to be used as part of our engine. Sadly our cypher queries turned out to be unacceptably slow.
So we are considering to move away from cypher to java. Would it be feasible to create a java plugin which solves the following problem: Our neo4j database maps relationships among the following node types:
- Products
- Tags
- Manufacturers
- Customers
Each relationship in our neo4j DB has a certain cost (for example, the connection between a Product and Tag_1 may be less costly than the connection between the same Product and Tag_2, which is less costly than the connection between the Product and a certain User).
We want to find the N (10? 20? 100?) most similar products to a certain source product.
Similarity is not only defined by the shortness of the path between two nodes but also by how many paths there are between source and destination.
Having extremely bad performance results with using cypher we are beginning to question whether Neo4J is the right tool for this problem.
Question for all Neo4J experts here:
Does it seem doable to create a small path finding algorithm in Java which takes in count the count of paths between two nodes as well?
We need response times of less than 100ms (max!).
Our neo4j server looks like this at the moment:
- Neo4J Version: community-2.1.1
- Nodes: 650,000
- Product Nodes: 550,000
- Properties: 8,000,000
- Relationships: 6,000,000
- Relationship types: 9
Thanks in advance for your thoughts.