OrientDB:使用Lucene查询相关文档字段

时间:2015-08-30 21:29:13

标签: lucene relationship orientdb vertices edges

假设我通过DirectedBy和Starring边缘将Movie顶点连接到Person顶点。

考虑一下这个按预期工作的OrientDB查询:

  

选择*,输出(" DirectedBy")。姓名,输出("主演")。电影中的姓名(" DirectedBy")CONTAINS(姓名) ='约翰福特')

正确地返回所有由人物导演的电影,其名称为#34; John Ford"。但是,我想使用Lucene全文搜索来执行查询,以提供更多的灵活性。

我认为我的索引设置正确,因为直接在Persons表上的查询成功会产生结果:

  

从姓名lucene' John Ford'

的人中选择*

然而,在我的Movie顶点查询中尝试使用lucene运算符不会产生任何结果:

  

选择*,输出(" DirectedBy")。姓名,输出("主演")。电影中的姓名(" DirectedBy")CONTAINS(姓名) LUCENE' John Ford')

我做错了吗?或者我想做一些不可能的事情?

1 个答案:

答案 0 :(得分:1)

为了使用LUCENE,你应该用它来执行SELECT,而不是在contains中。试试这应该超级快:

in("DirectedBy")

内部SELECT使用LUCENE找到“John Ford”,然后通过expand()穿过连接的电影。我使用了IF !var1! == !var2! ( GOTO :Success ) ELSE ( GOTO :Failure ),因为您需要在外部SELECT中显示所需信息的结果。