Несколько критериев, включая ближний и 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 ответ
См. Эту документацию: запросы не могут использовать как текстовые, так и геопространственные индексы. Поддерживается не каждая комбинация индексов.