在分布式系统中使用 Neo4j 和 Lucene
Using Neo4j and Lucene in a distributed system
我正在研究 Neo4j 作为精简文档存储。文档存储的一个关键方面是搜索,我知道 Neo4j 包括通过 Lucene 提供的遗留索引进行全文搜索。
我很想听听 Neo4j 搜索功能在分布式环境中的局限性。它是否提供分布式索引?它在哪些方面不如 Solr 或 ElasticSearch?在必须安装 Solr 之前,我可以走多远?
-- 编辑--
我们正在尝试整合两种截然不同的搜索工作。首先是标准的文本内容搜索。例如,使用 Enron 电子邮件,我们想要搜索匹配 "bananas" 或 "going to the store" 的每一封电子邮件,并获取这些文档正文作为响应。这是人们经常求助于 Solr 的地方。
第二种情况比较复杂,我们在每个文档中都附加了大量的元数据。我们可能已经确定 "these" 封电子邮件是深夜醉酒拨号的结果。现在我想搜索所有可能是深夜酒后拨号的电子邮件。对于这种元数据,我们认为图形数据库是合适的。
在一个完美的世界里,我可以使用一个平台来执行两个查询。我很欣赏 Neo4j(也不是 OrientDB、Arango 等)被设计为全文搜索数据库,但我试图了解其局限性。
就数量而言,我们处理的是非常大规模的批式夜间更新。数据内容繁重,一些文档 运行 包含数百页文本,但大部分都在一两页左右。
Neo4j 可以提供 "distributed index",因为 high availability cluster can make your index available on more than one machine, but I'm pretty sure that's not what you're after. Related to this issue is a different answer I wrote 关于图形分区,以及在多台机器上分布大量 nodes/relationships 所需要的东西。 (不是很简单)
Solr 和 Lucene 做两件不同的事情(尽管 Solr 是建立在 Lucene 之上的)。我认为 solr 和 neo4j 没有可比性,因为它们试图做完全不同的事情。这个网站不是关于软件推荐的,所以除了说你应该阅读 solr 和 neo4j 并弄清楚你想要哪组功能之外,我不能告诉你你应该使用什么。据我所知,这是一个独家决定,因为我不知道有人将 solr 与 neo4j 集成。
你的问题很难回答,我建议扩展你正在尝试做的事情和你已经尝试过的事情,你可能会得到更好的回答。
我曾经在一个健康社交网络工作过,我们需要某种搜索和连接搜索功能,我们首先使用 neo4j十亿个节点,你开始付出代价,我们开始考虑另一个图数据库,这次我们做了很多研究、测试,OrientDB 显然是赢家,OrientDB 具有高度可扩展性,但问题是你必须通过以下方式编码你自己,你的 "search algorithm" 如果你想做一些高级的事情(这两个节点之间的共同点是什么)否则你有 SQL 之类的查询语言(我不 know/remember 如果他有名字)但你可以用它做一些有趣的事情
所以总而言之,我肯定会继续使用 OrientDB
我正在研究 Neo4j 作为精简文档存储。文档存储的一个关键方面是搜索,我知道 Neo4j 包括通过 Lucene 提供的遗留索引进行全文搜索。
我很想听听 Neo4j 搜索功能在分布式环境中的局限性。它是否提供分布式索引?它在哪些方面不如 Solr 或 ElasticSearch?在必须安装 Solr 之前,我可以走多远?
-- 编辑--
我们正在尝试整合两种截然不同的搜索工作。首先是标准的文本内容搜索。例如,使用 Enron 电子邮件,我们想要搜索匹配 "bananas" 或 "going to the store" 的每一封电子邮件,并获取这些文档正文作为响应。这是人们经常求助于 Solr 的地方。
第二种情况比较复杂,我们在每个文档中都附加了大量的元数据。我们可能已经确定 "these" 封电子邮件是深夜醉酒拨号的结果。现在我想搜索所有可能是深夜酒后拨号的电子邮件。对于这种元数据,我们认为图形数据库是合适的。
在一个完美的世界里,我可以使用一个平台来执行两个查询。我很欣赏 Neo4j(也不是 OrientDB、Arango 等)被设计为全文搜索数据库,但我试图了解其局限性。
就数量而言,我们处理的是非常大规模的批式夜间更新。数据内容繁重,一些文档 运行 包含数百页文本,但大部分都在一两页左右。
Neo4j 可以提供 "distributed index",因为 high availability cluster can make your index available on more than one machine, but I'm pretty sure that's not what you're after. Related to this issue is a different answer I wrote 关于图形分区,以及在多台机器上分布大量 nodes/relationships 所需要的东西。 (不是很简单)
Solr 和 Lucene 做两件不同的事情(尽管 Solr 是建立在 Lucene 之上的)。我认为 solr 和 neo4j 没有可比性,因为它们试图做完全不同的事情。这个网站不是关于软件推荐的,所以除了说你应该阅读 solr 和 neo4j 并弄清楚你想要哪组功能之外,我不能告诉你你应该使用什么。据我所知,这是一个独家决定,因为我不知道有人将 solr 与 neo4j 集成。
你的问题很难回答,我建议扩展你正在尝试做的事情和你已经尝试过的事情,你可能会得到更好的回答。
我曾经在一个健康社交网络工作过,我们需要某种搜索和连接搜索功能,我们首先使用 neo4j十亿个节点,你开始付出代价,我们开始考虑另一个图数据库,这次我们做了很多研究、测试,OrientDB 显然是赢家,OrientDB 具有高度可扩展性,但问题是你必须通过以下方式编码你自己,你的 "search algorithm" 如果你想做一些高级的事情(这两个节点之间的共同点是什么)否则你有 SQL 之类的查询语言(我不 know/remember 如果他有名字)但你可以用它做一些有趣的事情 所以总而言之,我肯定会继续使用 OrientDB