Нет результатов с текстовым поиском MongoDB PHP

Я пытаюсь найти текстовое поле в своей коллекции. Это пример документа в моей коллекции:

{ "_id" : ObjectId("51f9c432573906141dbc9996"), "id" : ObjectId("51f9c432573906141dbc9995"), "body" : "the", "rank" : 0, "num_comm" : 0, "activity" : 1375323186 } 

Вот как я ищу …

 $mongo = new MongoClient("mongodb://127.0.0.1"); $db = $mongo->requestry; try { $search_results = $db->command(array('text' => 'trending', 'search' => '"the"')); } catch (MongoCursorException $e) { return array('error' => true, 'msg' => $e->getCode()); } return array('error' => false, 'results' => $search_results); 

И это результат, который я получаю …

 { error: false, results: { queryDebugString: "||||the||", language: "english", results: [ ], stats: { nscanned: 0, nscannedObjects: 0, n: 0, nfound: 0, timeMicros: 66 }, ok: 1 } } 

Ниже приведены мои индексы в коллекции …

 { "v" : 1, "key" : { "_id" : 1 }, "ns" : "requestry.trending", "name" : "_id_" }, { "v" : 1, "key" : { "_fts" : "text", "_ftsx" : 1 }, "ns" : "requestry.trending", "name" : "body_text", "weights" : { "body" : 1 }, "default_language" : "english", "language_override" : "language", "textIndexVersion" : 1 } 

Любые идеи о том, почему я каждый раз получаю пустой массив результатов?

Заранее благодарю за любую помощь!

Натан

Вы не можете искать «the», потому что это стоп-слово, а стоп-слова не индексируются. Список стоп-слов можно найти на странице https://github.com/mongodb/mongo/blob/master/src/mongo/db/fts/stop_words_english.txt

Фактически вы можете увидеть, что пытается совместить в строке отладки:

 queryDebugString: "

|the||"

Здесь первый элемент пуст, что означает, что совпадение не выполняется. Если вы посмотрите, что происходит для '"cat" AND "purple"' , строка отладки:

 queryDebugString: "cat|purpl

|cat|purple||"

Первый элемент (ы) теперь является cat|purpl – это показывает, что cat|purpl также применяется для purple .

У вас есть вложенные кавычки в вашем коде («строковый литерал»):

 $search_results = $db->command(array('text' => 'trending', 'search' => '"the"')); 

Попробуйте не вставлять цитаты

 $search_results = $db->command(array('text' => 'trending', 'search' => 'the'));