我想知道如何构建一个Cypher查询,它将使用spring数据neo4j将全文和简单索引结合起来。请看下面的节点实体:Spring Data Neo4j - 在同一个Cypher查询中合并全文和简单索引
@NodeEntity
public class SomeObject {
public SomeObject() {
}
public SomeObject(String name, int height) {
this.name = name;
this.height = height;
}
@Indexed(indexType = IndexType.FULLTEXT, indexName = "search_name")
String name;
@Indexed(numeric = false)
int height;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
OK,所以我的问题是我怎么可以运行一个查询(通过使用SomeObject
图形库)将从SomeObject
节点开始,通过引用其简单的索引和全文索引在相同的查询中。例如我想写出这样的事情:
START n=node:SomeObject('name: Roy AND height: [170 TO 190]') RETURN n
我知道,我不能写它完全一样的,因为春季数据Neo4j的力量我为那些需要进行全文索引的字段给一个单独的索引名。但是,如果我需要为我的SomeObject
实体组合这两个文件的索引查找呢? (名称&高度)
这种情况下的最佳做法是什么?有没有办法在同一个查询中将它们结合起来?或者也许我应该分别查询它们中的每一个,然后在两个结果之间执行某种某种交集,所以我将得到完全符合我原始查询查询条件的节点? (name: Roy AND height: [170 TO 190]
)。
谢谢! Roy。
我想到了两个选项: 1.所以第一个选项是运行两个查询,并然后手动交叉两个查询的结果,所以我将留下满足两个查询条件的节点。 2.其他选项可能类似于您所写的内容(您建议的第二个查询),但还要添加一个WHERE子句以确保** m **和** n **的图形ID是同样的,所以我只会得到满足两个条件的节点。可能吗?我现在无法检查,但我会尽量在今天晚上给出答案。 – gipouf 2013-05-07 13:30:37
添加WHERE子句不会有帮助,但我不知道任何其他选项。请让我知道我的第一个查询的性能是什么。 – tstorms 2013-05-07 13:35:12
我会试试看,谢谢 – gipouf 2013-05-07 13:37:37