Несколько критериев, включая ближний и textcriteri не работает весной данные mongodb

Я пытаюсь сделать geospital запрос в том числе full text search, Но это не работает. Позвольте мне поделиться своим кодом. Мой экземпляр Монго 2.6 который поддерживает полнотекстовый поиск. Запрос хорошо работает с критериями geoNear и категории. Однако, когда я добавляю textcriteri это не работает. Более того, я не знаю, как получить список объектов SEvent из GeoResult. Мой второй вопрос, возможно ли вернуть более 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;
}

1 ответ

См. Эту документацию: запросы не могут использовать как текстовые, так и геопространственные индексы. Поддерживается не каждая комбинация индексов.

Другие вопросы по тегам