注:skip和limit还可以做分页查询
public KgSearchResult getAutoQueryResultByKeyword(String sourceNodeId,String keyWord,Integer pageNo, Integer pageSize,boolean absolute) throws Exception {
KgSearchResult kgSearchResult = new KgSearchResult();
Integer skipNum = (pageNo-1)*pageSize;
//首先精确查询节点,如只有一个,查询返回;多个查询后合并
String querySql = " match (sourceNode) where sourceNode.name ={objName} return sourceNode skip "+skipNum+" limit " +pageSize;
Map<String, Object> paraMap = new HashMap<>();
paraMap.put("objName",keyWord);
Result result = getDriver().session().run(querySql,paraMap);
List<Record> list = result.list() ;
if(null != result && list.size() == 1){//只有一条
kgSearchResult = getQueryResultById(""+getNodeId(list.get(0).asMap().get("sourceNode")),pageNo,pageSize);//根据nodeid查询结果
}else if(null != result && list.size() > 1){//查出多条,合并
List<KgSearchResult> results = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
Long rootId = getNodeId(list.get(i).asMap().get("sourceNode"));
KgSearchResult ksr = getQueryResultById(""+rootId,pageNo,pageSize);
results.add(ksr);
}
kgSearchResult = mergeKgResult(sourceNodeId,keyWord,true,results);
}else if(!absolute){//没有查到,可以非精确查询
kgSearchResult = getAutoQueryResultByContainKeyword(sourceNodeId,keyWord,pageNo,pageSize);
}
if(null != kgSearchResult){
kgSearchResult.setPageNo(pageNo);
kgSearchResult.setPageSize(pageSize);
}
return kgSearchResult ;
}