Что я хотел бы сделать, так это следующее.MongoRegex и поиск нескольких строк в коллекции
$collection = $this->db->products_sale;
$user_query = preg_replace("/[[:blank:]]+/"," ", $data);
$arr_query = explode(' ', $user_query);
if (count($arr_query) > 1) {
$tmp = array();
foreach ($arr_query as $q) {
$tmp[] = new MongoRegex("/". $q ."/i");
}
$who['keywords'] = array('$in' => $tmp);
$who['title'] = array('$in' => $tmp);
$who['description'] = array('$in' => $tmp);
} else {
$who['keywords'] = new MongoRegex("/". $user_query ."/");
$who['title'] = new MongoRegex("/". $user_query ."/");
$who['description'] = new MongoRegex("/". $user_query ."/");
}
print json_encode($who);
$cursor = $collection->find($who);
Как вы можете видеть, что я делаю несколько запросов, что я хотел бы сделать, это следующее мне нужно, чтобы иметь возможность искать ключевые слова, название, описание
Теперь я мог бы сделать количество поисков, что я и думал, что делаю, но явно нет. из того, что я получил, кажется, что он отправляет одну длинную строку ARRAY или JSON обратно в mongoDB, в отличие от MySQL, где вы можете выполнить поиск OR/AND и даже поиск MATCH, кажется, MongoDB просто не тот умный.
Это то, что я нашел работу, но тогда он ищет точный способ поисковых поиски например
«Windows Phone 7» получил бы искал вместо ключевых слов.
$cursor = $collection->find(
array('$or' => array(
array("keywords" => new MongoRegex("/$user_query/i")),
array("product" => new MongoRegex("/$user_query/i")),
array("description" => new MongoRegex("/$user_query/i")),
)));
В зависимости от того, сколько данных вы планируете добавить, я подозреваю, что производительность быстро станет проблемой. Множественные (и не привязанные) регулярные выражения не будут использовать индекс. См. [Заметки о регулярных выражениях] (http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-RegularExpressions). Лучшим подходом было бы проиндексировать ваши документы с помощью подхода [Полный поиск текста] (http://www.mongodb.org/display/DOCS/Full+Text+Search+in+Mongo) по списку извлеченных ключевых слов или используйте полнотекстовую поисковую систему, которая обеспечит более богатые функции поиска и подсчет релевантности. – Stennie