2016-04-06 43 views
-1

我使用OrientDb 2.1.13。OrientDb使用lucene引擎查詢鏈接類

我有以下的數據庫結構

Area extends V   
--------------------------- 
Field  Type 
--------------------------- 
names  LinkMap to AreaName 



AreaName extends V 
--------------------------- 
Field  Type 
--------------------------- 
language String 
name  String (with a Lucene Index on this field) 

和我有以下值

Area 
------------------------------ 
@rid   names 
------------------------------ 
#12:6025  {"en":"#13:6025"} 


AreaName 
------------------------------ 
@rid   language  name 
------------------------------ 
#12:6025  en   Africa 

我試圖提取使用下面的查詢從區域數據,但沒有被提取。

1) select from Area where names.en.name lucene 'Africa*' 

代替使用以下查詢我可以提取數據(使用的=代替LUCENE)

2) select from Area where names.en.name = 'Africa' 

並且還使用該查詢(因此lucene的發動機工作良好,如果直接使用):

3) select from Area where names.en in 
    (select from AreaName where name lucene 'Africa*') 

我想知道哪個是正確的方式來查詢與lucene索引字段鏈接的類。我的問題是:

是查詢1)不起作用的錯誤?

有必要使用不同的語法?

或者唯一的方法是使用子查詢,就像在3)?

回答

1

與此查詢

select from Area where names.en.name lucene 'Africa*' 

目標類是面積,因此被搜索的類區,而不是AREANAME

指標

與此查詢

select from Area where names.en.name = 'Africa' 

可以提取數據,但你不使用索引

有了這個查詢你你硒對字段名

select from Area where names.en in 
    (select from AreaName where name lucene 'Africa*') 

指數我認爲你必須在3

+0

這是僅適用於LUCENE或任何類型的指數使用子查詢什麼樣的? –

+1

它適用於任何類型的索引 –