lucene如何与Neo4j一起使用

Shr*_*hri 6 lucene solr neo4j

我是Neo4j和Solr/Lucene的新手.我已经读过我们可以在Neo4j中使用lucene查询这是如何工作的?在Neo4j中使用lucene查询有什么用?

而且我还需要一个建议.我需要编写一个应用程序来搜索和分析数据.which might help me Neo4j Or Solr?

Fro*_*its 12

Neo4J使用lucene作为其遗留索引的一部分.现在,Neo4J支持几种索引,比如在节点上创建标签,以及在节点属性上创建索引.

但在neo4j支持这些新功能之前,它主要(并且仍然)使用Lucene进行索引.大多数开发人员会在特定节点属性上创建lucene索引,以使他们能够使用lucene的查询语法在cypher查询中查找节点.

例如,如果您根据文档创建了索引,则可以在索引中搜索特定值,如下所示:

IndexHits<Node> hits = actors.get( "name", "Keanu Reeves" );
Node reeves = hits.getSingle();
Run Code Online (Sandbox Code Playgroud)

它实际上是在做那个发现的场景.

在密码中,它可能看起来像这样:

start n=node:node_auto_index('name:M* OR name:N*')
return n;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您正在为具有以"M"或"N"开头的name属性的所有节点搜索特定索引.根据lucene查询语法,单引号表达式内部只有一个查询.

好吧,这就是Neo4J如何使用lucene.在最近的版本中,我只使用这些"遗留索引"进行全文索引,这是lucene的优势所在.如果我只想要快速等式检查(其中name ="Neo"),那么我使用常规的neo4j模式索引.

至于Solr,我还没有看到它与neo4j一起使用 - 也许有人会跳进去提供一个反例,但通常我认为Solr运行在一个大的lucene索引之上,并且在neo4j的情况下,它在那里的中间,我不确定运行Solr是否合适.

至于你需要编写一个搜索和分析数据的应用程序,我不能给你一个建议 - Neo4J或Solr可能会有所帮助,这取决于你的应用程序和你想做什么.在一般情况下,当您需要表达和搜索图表时,请使用neo4j.当您需要组织和搜索大量文本文档时,请使用Solr.

  • "传统索引"是遗产.如果需要进行相等比较,请使用我提到的模式索引.它们更快,因为我相信当cypher查询构建计划时,它会根据模式索引获得更多选择性,而不会使用lucene索引.现在,话虽如此,如果你需要全文,neo4j不提供另一种选择 - 所以为此你应该坚持使用Lucene索引,恕我直言.tl; dr取决于你想做什么. (2认同)