使用带有模糊搜索文本 mongodb 的 geonear

问题描述

我有以下查询

db.hotels.aggregate([
    {
        $search: {
            index:'txtIdx',// this is the index name
            text: {
                query:"sun",path:['name','address.landmark','address.city','address.state','address.country'],fuzzy: {
                  maxEdits:2,prefixLength: 1,},{
        $project: {
          _id: 1,name: 1,address:1,score: { $Meta: "searchscore" }
        }
    },{$limit:100},])

hotels 集合中还有一个字段叫'location',其坐标如下

"location": {
        "type": "Point","coordinates": [
               72.867804,19.076033
        ]
    } 

我如何在此搜索查询中使用 geonear 以仅返回用户附近的酒店,并提供纬度、经度和距离。

我也试过这个查询

    {
    $search: {
      index:'searchIndex',compound: {
        must: {
          text: {
            query:'sun',fuzzy: {
              maxEdits:2,prefixLength: 3,should: {
            near:{
             origin: {
                type: 'Point',coordinates: [-122.45665489904827,37.75118012951178],pivot: 1000,path: 'location'
          },}
      }
    }
  },

但上面的查询返回的结果甚至不在该位置附近。它返回的结果与“搜索”在没有“附近”的情况下提供的结果相同。我已经为位置创建了“地理”索引,但它仍然没有返回附近的酒店。

或者除了使用 geonear 和搜索之外还有其他方法吗?我从过去 2 天开始一​​直在尝试,但我没有发现任何有用的东西。另外我只想使用模糊文本搜索。请告诉我是否有办法解决这个问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...