OrientDb在链接类上使用lucene引擎查询

时间:2016-04-06 11:54:12

标签: lucene orientdb

我使用OrientDb 2.1.13。

我有以下数据库结构

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

我尝试使用以下查询从Area中提取数据,但没有提取任何内容。

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 个答案:

答案 0 :(得分:1)

使用此查询

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

目标类是Area,因此搜索类Area上的索引而不是AreaName

使用此查询

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

您可以提取数据但不使用索引

使用此查询,您可以使用字段名称

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

我认为你必须像3中那样使用子查询。