有几种方法可以解决这个问题!
正如 FrobberOfBits 所说,Neo4j 有所谓的“遗留索引”,它使用 Lucene 作为背景来提供通用事物的索引。它确实支持新的模式索引。不幸的是,这些都是基于完全匹配的(尽管我很确定在 Neo4j 2.3.x 中会有所改变)。
Neo4j 确实支持通过=~
运算符对字符串进行模式匹配,但这些查询没有被索引。所以性能取决于数据库的大小。
我们经常推荐一个名为的 gem searchkick
,它可以让您在模型中为 Elasticsearch 定义索引。然后你可以调用一个Model.search
方法来进行搜索,它会首先查询 elasticsearch 以获取节点 ID,然后通过 Neo4j.rb 加载这些节点。您可以通过neo4j-searchkick
gem 使用它:https ://github.com/neo4jrb/neo4j-searchkick
最后,如果您正在执行 NLP 并尝试从文本中提取重要单词,您可以创建Tag
/Word
标签并创建从节点到这些 NLP 提取节点的关系,以便您将来可以基于这些节点进行搜索。您甚至可以根据常见标签节点的数量/类型构建从一个文本节点到另一个文本节点的推荐。