GraphAware Blog

Find out what's new in the Neo4j world

Custom analyzer for fulltext search in Neo4j

06 Sep 2019 by František Hartman Neo4j Cypher Search

We have already blogged about fulltext search available in Neo4j 3.5. The list of available analyzers covers many languages and fits various use cases. However once you expose the search to real users they will start pointing out edge cases and complain about the search not being google-like.Speakers of languages using accents in their written form quite often leave out the accents. This has various reasons, the most common ones are historical, when different character encodings caused problems and users find it hard to change their habits using a different default keyboard layout (e.g. en_US); switching the layout just for...

Scale up your D3 graph visualisation - WebGL & Canvas with PIXI.js

05 Sep 2019 by Jan Zak Graph Visualization Intermediate

Scale up your D3 graph visualisation - WebGL & Canvas with PIXI.js

Do you use D3 for data visualisation and are you now considering its usage for graph visualisation? Keep in mind that D3 uses SVG for rendering. While it is the easiest to work with API for drawing 2D graphics on the Web, its downside is that the browser keeps the entire DOM tree of vector elements in memory, even for elements that are effectively invisible. You might hit a performance drop with complex graphics, specifically for graph visualisation when you try drawing graphs larger than ~1000 nodes, or even less with complex SVG effects.At this time you should reconsider why...

Cypher: Using Index Hints

19 Aug 2019 by Luanne Misquitta Neo4j Cypher Intermediate

The Cypher query planner is quite advanced and mature, and you can mostly rely on it to pick the best plan for your query. However, there are rare cases, or bugs, that might want you looking for ways to influence that plan. This article demonstrates practical usage of an index hint. Note that all queries were tested against Neo4j Enterprise 3.5.8The graph modelThis is the relevant portion of the graph model that is sufficient to demonstrate the issue.Simple enough- we have many tweets, and tweets have keywords.Our graph has two indexes, one on the value of the Keyword, and the...

Build your first Neo4j Desktop Graph App in vanilla Javascript

25 Jul 2019 by Aldrin Misquitta Neo4j Web Apps Beginner Graph Apps

Build your first Neo4j Desktop Graph App in vanilla Javascript

Neo4j Desktop, part of the Neo4j Graph Platform, is a client application that installs on your desktop OS. It lets you get started quickly by downloading and installing the enterprise edition, and supported plugins. You can group related graphs and applications under a Project. You can also build single-page web applications that run within Neo4j Desktop and have access to these services provided by Neo4j Desktop. There are a number of apps available at https://install.graphapp.io/In this blog post, we will build a very simple graph app using vanilla javascript.All code in this blog post is available at https://github.com/aldrinm/simple-graph-app and https://github.com/aldrinm/simple-graph-app-npmHello,...

GraphAware Announces Hume Platform R&D Center

23 Jul 2019 by Kyle McNamara

BOSTON, July 23, 2019 /PRNewswire/ – GraphAware, a leading Neo4j ISV and consulting practice, today announced the official launch of its Italian Research and Development entity Graph Aware S.r.l., headquartered in Lecce, Italy.This strategic investment by GraphAware represents a significant expansion as an ISV, with a fast growing development team of thought-leaders in GraphDBs with Neo4j, Natural Language Processing (NLP), Machine Learning (ML) and Artificial Intelligence (AI).Led by Chief Scientist Alessandro Negro and CTO Christophe Willemsen,the Lecce R&D center is the main lab and development center for GraphAware’s flagship software platform Hume- with a dedicated local and remote development team...

Graphs as Lateral Thinking for ITOps

16 Jul 2019 by Isaac Rosado Neo4j Knowledge Graph ETL DevOps ITSM ITOps ITIL

Graphs as Lateral Thinking for ITOps

“Lateral thinking” was a big topic back in 2004 when I was in the Network Operations Center (NOC) business; one definition is: “(lateral thinking) is the solving of problems by an indirect and creative approach, typically through viewing the issue in a new and unusual light.”If it works, don’t touch itBut the world of NOC operations, and generally IT Operations was anything but creative, not because we didn’t appreciate innovation per se, but because we valued reliability, consistency an uptime above all things, and those outcomes are the result of a long tradition in IT of approaching change, the natural...

Monitoring Neo4j and Procedures with Prometheus and Grafana - Part 2

14 Jun 2019 by Miro Marchi Neo4j Monitoring Causal Cluster

Monitoring Neo4j and Procedures with Prometheus and Grafana - Part 2

This is the second of a two post series on monitoring the Neo4j graph database with popular enterprise solutions such as Prometheus and Grafana. Monitoring the status and performance of connected data processes is a crucial aspect of deploying graph based applications. In Part 1 we have seen how to expose the graph database internals and custom metrics to Prometheus, where they are stored as multi-dimensional time series.It is now time to query those metrics and render results in a beautiful, integrated Grafana dashboard. This will help you establish 24/7 monitoring and alerting of your Neo4j setup so that you...

Avoid cycles in Cypher queries

26 Apr 2019 by Jan Zak Neo4j Beginner Cypher

Avoid cycles in Cypher queries

There is one common performance issue our clients run into when trying their first Cypher queries on a dataset in Neo4j. When writing a query, be sure that it doesn’t match any cycles, or you can experience unpleasant surprises.Assume the following sample graph and simple query:CREATE (a:Node {name: "A"}), (b:Node {name: "B"}), (c:Node {name: "C"}), (a)-[:TO {name: "1"}]->(b), (a)-[:TO {name: "2"}]->(b), (a)-[:TO {name: "3"}]->(b), (b)-[:TO {name: "4"}]->(c)MATCH p=({name: "A"})-[*..10]-({name: "C"}) RETURN pThe query returns 9 paths, instead of 3 as you might have guessed! The additional 6 paths have length 4 with node pattern A-B-A-B-C, note the repeated nodes A...

Graph-assisted Typescript refactoring

09 Mar 2019 by Roberto Previdi Neo4j Refactoring Typescript Development Community Detection Object Oriented

Graph-assisted Typescript refactoring

When developing web applications with frameworks like Vue.js the best approach is to subdivide it into well-defined and reusable components for the user interface, with the business logic being encapsulated in ‘services’.In an ideal world every new feature added should follow this approach and all components and services should remain at a reasonable size, so that you can quickly glance at each file and understand what it does.The problemThe reality is usually much less ideal: good principles are followed rigorously when the project is young, but as new features, bug fixes and different developers accumulate, components and services can become...