Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
包括near和textcriteri在内的多个条件在spring data mongodb中不起作用_Spring_Mongodb_Spring Data_Spring Data Mongodb - Fatal编程技术网

包括near和textcriteri在内的多个条件在spring data mongodb中不起作用

包括near和textcriteri在内的多个条件在spring data mongodb中不起作用,spring,mongodb,spring-data,spring-data-mongodb,Spring,Mongodb,Spring Data,Spring Data Mongodb,我正在尝试进行geospital查询,包括全文搜索。但它不起作用。 让我分享我的代码。我的mongo实例是2.6,它支持全文搜索。该查询与geoNear和category条件配合良好。但是,当我添加textcriteri时,它不起作用。此外,我不知道如何从Georgesult获得七个对象的列表。 我的第二个问题,是否可以从geo near query返回100多个文档? 因为按照我的要求,;例如,用户将开始搜索前1公里以外的点。然后,如果他想要更多的内容,他可以问“好的,给我内容最少1km,最多

我正在尝试进行
geospital
查询,包括
全文搜索
。但它不起作用。 让我分享我的代码。我的mongo实例是
2.6
,它支持全文搜索。该查询与geoNear和category条件配合良好。但是,当我添加
textcriteri
时,它不起作用。此外,我不知道如何从Georgesult获得七个对象的列表。 我的第二个问题,是否可以从geo near query返回100多个文档? 因为按照我的要求,;例如,用户将开始搜索前1公里以外的点。然后,如果他想要更多的内容,他可以问“好的,给我内容最少1km,最多2km”等等。。。在整个互联网上找不到关于我的问题的任何高级信息。这就是为什么需要你的帮助

public List<SEvent> searchEventByTxt(String txt, String catId, double longitude, double latitude) throws SowException{
    Category cat = null;
    Query secondQ = null;
    if(!catId.equals("-1")){
        cat = categoryService.findById(catId);
        if (txt != null && txt.length() > 0) {
            secondQ = new Query(Criteria.where("catId").is(cat.getId()).and(TextCriteria.forLanguage(new Locale(SOW.Session.current().getLang()).getLanguage()).matching(txt).getKey()));

        } else {
            secondQ = new Query(Criteria.where("catId").is(cat.getId()));
        }
    } else {
        if (txt != null && txt.length() > 0) {
            secondQ = new TextQuery(TextCriteria.forLanguage(new Locale(SOW.Session.current().getLang()).getLanguage()).matching(txt));
        }
    }

    Point point = new Point(longitude, latitude);
    NearQuery nq = NearQuery.near(point).maxDistance(new Distance(2, Metrics.KILOMETERS));

    if(secondQ != null)
        nq.query(secondQ);

    GeoResults<SEvent> res = mo.geoNear(nq, Adv.class);
    List<GeoResult<SEvent>> list =  res.getContent();

    for (GeoResult<SEvent> geoResult : list) {
        System.out.println(geoResult.getContent().getTitle());
    }
    return null;
}
公共列表searchEventByTxt(字符串txt、字符串catId、双经度、双纬度)引发异常{
类别cat=null;
Query secondQ=null;
如果(!catId.equals(“-1”)){
cat=类别服务findById(catId);
如果(txt!=null&&txt.length()>0){
secondQ=新查询(Criteria.where(“catId”).is(cat.getId())和(TextCriteria.forLanguage)(新语言环境(SOW.Session.current().getLang()).getLanguage()).matching(txt.getKey());
}否则{
secondQ=新查询(Criteria.where(“catId”).is(cat.getId());
}
}否则{
如果(txt!=null&&txt.length()>0){
secondQ=newtextQuery(TextCriteria.forLanguage(新语言环境(SOW.Session.current().getLang()).getLanguage()).matching(txt));
}
}
点=新点(经度、纬度);
NearQuery nq=NearQuery.near(point).maxDistance(新距离(2,Metrics.km));
if(secondQ!=null)
nq.查询(secondQ);
地理结果res=mo.geoNear(nq,Adv.class);
List=res.getContent();
对于(Georgesult Georgesult:list){
System.out.println(geoResult.getContent().getTitle());
}
返回null;
}

请参阅此文档:并非所有索引组合都受支持

谢谢您的回答。是的,你是对的。有趣!这是一个非常普遍的情况。很遗憾我不能那样做。你有什么建议吗?有用于文本搜索的高级正则表达式吗?