2015-08-30 66 views
0

假設我有Movie頂點通過DirectedBy和Starring邊連接到Person頂點。OrientDB:使用Lucene查詢相關文檔字段

考慮這個OrientDB查詢預期其工作原理:。

選擇*,出( 「DirectedBy」)名稱,出( 「主演」)的電影在那裏了( 「DirectedBy」)名稱中包含( Name ='John Ford')

正確地返回人名爲「John Ford」的所有電影。不過,我想使用Lucene全文搜索執行查詢,以提供更多的靈活性。

我想我有我的指標設置是否正確,如直接在個人表查詢成功,產生的結果:

SELECT * FROM人,其中名稱Lucene的約翰·福特「

然而試圖在我的電影頂點查詢中使用lucene運算符不會產生任何結果:

select *,out(「DirectedBy」)。Name,out(「Starring」)。Name from Movie where out(「D irectedBy「)CONTAINS(姓名LUCENE'John Ford')

我做錯了什麼?或者我想做一些不可能的事情?

回答

1

爲了使用LUCENE,您應該使用它執行SELECT,而不是在包含內部。試試這個,應該是超級快:

select *, out("DirectedBy").Name, out("Starring").Name 
from (
    select expand(in("DirectedBy")) from person where Name lucene 'John Ford' 
) 

內部的選擇使用Lucene來找到「約翰·福特」,然後感謝in("DirectedBy")連接的電影跨越。我使用了expand(),因爲在顯示所需信息的外部SELECT中需要該結果。

+0

啊,謝謝。這就說得通了! –