#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