我正在尝试进行包括全文搜索
的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/