我是 Neo4j 和 Solr / Lucene 的新手。我已经读过我们可以在Neo4j中使用lucene查询这是如何工作的?在Neo4j中使用lucene查询有什么用。?
我还需要一个建议。我需要编写一个应用程序来搜索和分析数据。 which might help me Neo4j Or Solr?
答案 0 :(得分:12)
Neo4J使用lucene作为其legacy indexing的一部分。现在,Neo4J支持多种索引,例如在节点上创建标签,以及在节点属性上创建索引。
但在neo4j支持这些新功能之前,它主要(并且仍然)使用Lucene进行索引。大多数开发人员会在特定节点属性上创建lucene索引,以使他们能够使用lucene的查询语法在cypher查询中查找节点。
例如,如果您created an index according to the documentation,则可以在索引中搜索特定值,如下所示:
IndexHits<Node> hits = actors.get( "name", "Keanu Reeves" );
Node reeves = hits.getSingle();
实际上正在做这个发现的幕后工作已经过去了。
在密码中,它可能如下所示:
start n=node:node_auto_index('name:M* OR name:N*')
return n;
在这种情况下,您正在为具有以“M”或“N”开头的name属性的所有节点搜索特定索引。根据{{3}},单引号表达式内部只有一个查询。
好的,这就是Neo4J如何使用lucene。在最近的版本中,我只使用这些“遗留索引”进行全文索引,这是lucene的优势所在。如果我只想要快速等式检查(其中name =“Neo”),那么我使用the lucene query syntax。
至于Solr,我还没有看到它与neo4j一起使用 - 也许有人会跳进去提供一个反例,但通常我认为Solr运行在一个大的lucene索引之上,并且在neo4j的情况,它在那里的中间,我不确定运行Solr是否合适。
至于你需要编写一个搜索和分析数据的应用程序,我无法给你一个建议 - Neo4J或Solr可能会有所帮助,具体取决于你的应用程序和你想做什么。在一般情况下,当您需要表达和搜索图表时,请使用neo4j。当您需要组织和搜索大量文本文档时,请使用Solr。