2013-06-06 2 views
1

Когда мы пытаемся выполнить поиск в mongo cli, мы не получаем правильные данные. Вот полный сценарий:MongoDB запрос для полнотекстового поиска и Geo, возвращающий неправильный результат

Мы имеем следующий JSON в коллекции:

"_id" : 18348, 
"Name" : "Applebee's Neighborhood Grill", 
"AddressLine1" : "2545 Scottsville Rd, Bowling Green, KY - 42104, United States", 
"loc" : { 
    "lng" : -86.42583465576172, 
    "lat" : 36.95203399658203 
    }, 
"ProfilePicturePath" : "", 
"MarketID" : 92, 
"TotalFavorites" : 0, 
"PriceRating" : null, 
"ProfileType" : "R", 
"Cuisines" : [ ], 
"Rating" : 4 

Когда мы ищем, где мы даем ОБА Geo запросы и полный текст, мы получаем неверный результат. В этом случае (ниже) я изменил долготу: db.rests.runCommand («текст», {поиск: «Applebee's», фильтр: {loc: {$ рядом: [-86.43113708496094,136.963356018066406], $ maxDistance: 1/69}}})

я получаю:

{ 
    "queryDebugString" : "applebe||||||", 
    "language" : "english", 
    "results" : [ 
     { 
      "score" : 0.6666666666666666, 
      "obj" : { 
       "_id" : 18348, 
       "Name" : "Applebee's Neighborhood Grill", 
       "AddressLine1" : "2545 Scottsville Rd, Bowling Green, KY - 42104, United States", 
       "loc" : { 
        "lng" : -86.42583465576172, 
        "lat" : 36.95203399658203 
       }, 
       "ProfilePicturePath" : "", 
       "MarketID" : 92, 
       "TotalFavorites" : 0, 
       "PriceRating" : null, 
       "ProfileType" : "R", 
       "Cuisines" : [ ], 
       "Rating" : 4 
      } 
     } 
    ], 
    "stats" : { 
     "nscanned" : 1, 
     "nscannedObjects" : 1, 
     "n" : 1, 
     "nfound" : 1, 
     "timeMicros" : 92 
    }, 
    "ok" : 1 
} 

мы пытались со следующими показателями:

db.rests.ensureIndex({ "locs": "2d" }) 
db.rests.ensureIndex({Name: "text",AddressLine1: "text"}) 
db.rests.ensureIndex({Name: "text",AddressLine1: "text"},{"loc":"2d"}) 

Возможно, мы делаем что-то не так? Если мы не используем Geo Filter и не используем другие фильтры, такие как Rating и т. Д., Он отлично работает.

Пожалуйста, помогите
Amit
http://www.aquevix.com

+0

текстовый поиск по-прежнему находится в стадии бета-тестирования (MongoDB 2.4) и $ near, похоже, не работает как часть фильтра. Однако согласно [этому сообщению] (https://groups.google.com/forum/?fromgroups#!topic/mongodb-user/OEHA51esH-0) ** $ geoWithin ** работает. Можете ли вы попробовать это? – jimoleary

ответ

0

Согласно 2.4 documentation, текстовые индексы не работают с $ вблизи:

Примечание Вы не можете объединить команду текст, который требует специального текстовый индекс, с оператором запроса, который требует другого типа специального индекса. Например, вы не можете комбинировать текст с оператором $ near.

Смежные вопросы