Текстовая команда будет удалена > вместо этого следует использовать $text query

#php #mongodb #full-text-search #deprecated

#php #mongodb #полнотекстовый поиск #устарело

Вопрос:

Я только что настроил MongoDB с последним выпуском всех компонентов:

  • MongoDB 2.6.2
  • PHP 5.5.11 VC11
  • php_mongo.dll (Я на Windows) 1.4.3 ts VC11

Я провел быстрый тест, чтобы проверить, в порядке ли моя база данных, и я могу получить свои данные с помощью полнотекстового поиска:

 $m = new MongoClient();
$db = $m->mytestdb;

$result = $db->command(
    array(
        'text' => 'items',
        'search' => 'something',
        'limit' => 50,
    )
);
  

Все в порядке, но когда я вижу журналы MongoDB, появляется одно странное сообщение, я не могу найти никаких ответов в Интернете:

[conn1] Текстовая команда будет удалена в будущем выпуске. Вместо этого используйте оператор запроса $text.

Поскольку я только начинаю работать над этим, меня немного пугает, что полнотекстовый поиск, который я просто использую, устареет.

Даже официальный документ использует этот код (см. Пример # 4).

Итак, что я должен использовать вместо своего кода? Я боюсь, что если я когда-нибудь использую этот код во время apt-get update amp; upgrade, весь мой код выпадет.

Комментарии:

1. Эй, не могли бы вы опубликовать свое решение в качестве ответа вместо этого?

2. Привет! Хорошо, я только что отредактировал свой пост, пожалуйста, смотрите Ниже 😉

3. Потрясающе. Молодец! : P

Ответ №1:

Я узнал с новым $text из 2.6, вот как выполнить тот же запрос, что и раньше, с помощью command:

 $m = new MongoClient();
$db = $m->mytestdb;
$collection = $db->items;

$cursor = $collection->find(
    array(
        '$text' => array('$search' => 'something to search')
    ),
    array (
        'score' => array('$meta' => "textScore")
    )
);
  

Ответ №2:

Похоже, что они выкатывают $text в версии 2.6 и отказываются от функции текстового поиска.

вы можете сослаться на дополнительную информацию о $text здесь.

http://docs.mongodb.org/manual/reference/operator/query/text/#op._S_text