【问题标题】:Neo4j as a search engineNeo4j 作为搜索引擎
【发布时间】:2016-07-24 07:36:19
【问题描述】:

我进行了几次测试并阅读了很多案例以使用 Neo4J 进行基于图形的搜索。我对灵活模式和实时搜索和检索等功能深信不疑。但我也意识到它并非旨在存储文档以方便全文搜索。对我来说,这款产品的潜力在于通过数据关系实现的商业价值。

该产品与我的案例 99% 匹配:我工作的公司的“内部 google”,但文档(Word、PDF 等)的全文搜索除外。这不是一个硬性要求,而是一个很好的要求。不过,我应该放弃 Neo4J 的特定功能并选择像 Elastic Search 这样的产品,还是 Neo4J 是我们正在寻找的产品?

【问题讨论】:

  • 另外你应该知道 ES 2.3 现在还具有图形引擎,这使得 Neo4J 在许多用例中几乎已经过时:elastic.co/products/graph
  • @Val ES 图的功能似乎非常有限(没有无索引邻接 - 这对于复杂图遍历和没有属性图模型的性能很重要)。
  • 没错,Will,我只是指出,对于“许多简单的用例”,ES 将能够填补之前不可能实现的空白。同意它仍然是有限的,但它只会变得更好。 +1 为您的回答 ;)
  • ES 图有不同的目标。简单的查询语言。节点的相关性排名。聚合边缘。 “弹性”计算集群。遍历确实使用了一些 O(1) 数据结构,但我们不会在任何地方都使用它,因为查询时的无索引邻接从来都不是免费的——每次写入都必须付费。

标签: search elasticsearch graph neo4j full-text-search


【解决方案1】:

Neo4j 中有几个文本搜索选项:

Cypher(Neo4j 查询语言)包括一些字符串比较运算符:CONTAINSSTARTS WITHENDS WITH。例如:

MATCH (d:Document) WHERE d.title STARTS WITH "Graph"
RETURN d

您还可以通过“遗留”索引在 Neo4j 中使用 Lucene 查询。例如:

START doc=node:node_auto_index("title:graph*")
...

更多信息请参见this post

您还可以将文档建模为图形,并使用 Cypher 作为图形模型来查询它们。例如,请参阅Neo4j Doc Manager project 将数据从 MongoDB 转换为 Neo4j。

最后,您还可以同时使用 Neo4j 和 Elasticsearch,在 Elasticsearch 中索引文本数据并使用 Neo4j 进行图遍历。见this project

【讨论】:

  • 感谢您的帮助。使用“文档”进行全文搜索,我指的是 Word 和 PDF 文档。
猜你喜欢
  • 1970-01-01
  • 2015-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-31
相关资源
最近更新 更多