spring - 包括 near 和 textcriteri 在内的多个标准在 spring data mongodb 中不起作用

标签 spring mongodb spring-data spring-data-mongodb

我正在尝试进行包括全文搜索geospital 查询。但它不起作用。 让我分享我的代码。我的 mongo 实例是 2.6,它支持全文搜索。该查询适用于 geoNear 和类别标准。但是,当我添加 textcriteri 时,它不起作用。此外,我不知道如何从 GeoResult 获取 SEvent 对象的列表。 我的第二个问题,是否可以从 geo near 查询返回超过 100 个文档? 因为根据我的要求;例如,用户将开始搜索第一个 1 公里远的点。然后,如果他想要更多内容,他可以问“好吧,给我最小 1 公里最大 2 公里的内容”等等……在整个互联网上找不到关于我的问题的任何高级信息。这就是为什么要寻求您的帮助。

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

最佳答案

请参阅此文档:Queries cannot use both text and Geospatial Indexes并非支持所有索引组合

关于spring - 包括 near 和 textcriteri 在内的多个标准在 spring data mongodb 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27196610/

相关文章:

spring - 如何在 Spring Data 中使用 OrderBy 和 findAll

java - Spring bean 范围

java - Spring 框架 application.properties 与 logback.xml

macos - 通过 Express 和 MongoDB 使用 session ,为什么我只能连接一次路由,除非我更改 session key ?

spring-boot - 在 Elasticsearch 或 Spring 数据 Elasticsearch 中使用源过滤是否会对性能产生影响?

java - 从spring-data-jdbc的 "Entities"生成脚本sql

mysql - 将数据库服务器与 Tomcat 服务器分开设置会对整体性能产生影响

java - reCaptcha 在用 Google 验证时总是返回 false

javascript - Mongoose 检查集合是否存在

node.js - MEAN堆栈应用-通过userId查询