如何将MongoDB的$text和$nearSphere搜索运算符一起使用?

问题描述 投票:0回答:1

我有一些文档,有一些字符串字段和一些嵌入的GeoJSON点,像这样。

{
   title: "",
   description: "",
   geometry: {
      type: "Point",
      coordinates: [0,0]
   }
}

所以根据 文献,MongoDB的全文操作符和地理搜索操作符不能在同一个查询中使用。

这对我来说有点道理,因为它们都试图以不同的方式对相同的结果进行排序,那么有什么好的替代方式呢。

  • 首先,过滤用户提供的搜索词匹配的文档。
  • 然后,按照与用户提供的坐标的距离对匹配的文档进行排序。

换一种说法,我想用全文检索算法简单的说就是 过滤而不是排序而地理搜索操作则相反。这似乎是健全的原则,当然,许多位置感知应用程序让你这样做这一点(例如。rightmove, deliveroo,airbnb等),所以什么是最好的方法?

我想我可以做一些事情 合理 善用 $or 和多个字段的regex值,但我怀疑结果是否会像使用本地搜索算法一样好或速度快。

Aggregations似乎并不能帮助解决这个问题,尽管我开始阅读map-reduce,它似乎可以提供一个可能的解决方案。

mongodb search geojson
1个回答
0
投票

你能不能..:

  • $match 使用文本索引
  • 使用 $let 手动计算距离
  • 按计算距离排序

?

© www.soinside.com 2019 - 2024. All rights reserved.