圖數據庫:neo4j:java API

注: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 ;
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章