我使用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)?
答案 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中那样使用子查询。