Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How lucene works with Neo4j

Tags:

solr

lucene

neo4j

I am new to Neo4j and Solr/Lucene. i have read that we can use lucene query in Neo4j how does this works? What is the use of using lucene query in Neo4j.?

And also i need a suggestion. I need to write an application to search and analyse the data. which might help me Neo4j Or Solr?

like image 314
Shri Avatar asked Oct 08 '14 12:10

Shri


1 Answers

Neo4J uses lucene as part of its legacy indexing. Right now, Neo4J supports several kinds of indexes, like creating labels on nodes, and indexes on node properties.

But before neo4j supported those new features, it primarily (and still) used Lucene for indexing. Most developers would create lucene indexes on particular node properties, to enable them to use lucene's query syntax to find nodes within a cypher query.

For example, if you created an index according to the documentation, you could then search the index for particular values like this:

IndexHits<Node> hits = actors.get( "name", "Keanu Reeves" );
Node reeves = hits.getSingle();

It's lucene behind the scenes that's actually doing that finding.

In cypher, it might look like this:

start n=node:node_auto_index('name:M* OR name:N*')
return n;

In this case, you're searching a particular index for all nodes that have a name property that starts either with an "M" or an "N". What's inside of that single quote expression there is just a query according to the lucene query syntax.

OK, so that's how Neo4J uses lucene. In recent versions, I only use these "legacy indexes" for fulltext indexing, which is where lucene's strength is. If I just want fast equality checks (where name="Neo") then I use regular neo4j schema indexes.

As for Solr, I haven't seen it used in conjunction with neo4j - maybe someone will jump in and provide a counter-example, but usually I think of Solr as running on top of a big lucene index, and in the case of neo4j, it's kind of in the middle there, and I'm not sure running Solr would be a good fit.

As for you needing to write an application to search and analyze data, I can't give you a recommendation - either Neo4J or Solr might help, depending on your application and what you want to do. In generalities, use neo4j when you need to express and search graphs. Use Solr more when you need to organize and search large volumes of text documents.

like image 76
FrobberOfBits Avatar answered Oct 01 '22 17:10

FrobberOfBits