我使用neo4j.rb作为Rails应用程序的ORM,使用一个简单的neo4j模式。我有一堆Person节点,每个节点都有两个字段name和bio。
我的目标是:(a)使用不区分大小写的模糊名称搜索;(b)能够对生物进行全文搜索。
我对neo4j中的索引/搜索是如何工作的感到非常困惑。我不确定我完全理解“模式”和“遗留”索引之间的区别,或者Lucene是如何适应所有这些的。最重要的是,我不明白neo4j.rb实际上支持哪些特性。
提前谢谢。
发布于 2014-10-24 21:54:18
我是Neo4jrb项目的维护人员之一。索引对每个人来说都是相当令人困惑的,但我可以很容易地对您进行分解。
gem根本不处理遗留索引。“遗留”的命名向我们表明,它不会永远存在,再加上使用它有点笨重,导致我们决定不实现它。gem中的所有内容都使用标签和属性索引,它们都是幕后的Lucene精确索引。
当涉及到搜索时,如果您想要不区分大小写和/或全文搜索,您可以在Cypher和gem中这样做,但是它将在索引之外工作,而且可能很慢。这完全取决于你的数据。这向您展示了如何使用Cypher进行正则表达式。在宝石里,你可以这样做:
User.where(name: /?ob/)
# or
User.as(:u).where("u.name =~ '?ob`")我个人的建议是使用Search踢宝石提供这些功能。它使用Elasticsearch,它使用Lucene,这也是Neo4j所使用的,所以您将获得更多的控制和与传统索引相同的性能。缺点是你有一个移动的部分你的设置,但我认为这是值得的。
希望这能把它弄清楚。我将在wiki中添加一个关于它的区域,因为这是一个非常常见的问题。张贴在这里,打开一个问题上的Github,或给我一封电子邮件,如果你想多谈谈它。
编辑:我将这添加到文档中。
https://stackoverflow.com/questions/26551665
复制相似问题