我想创建一个mongodb的全文搜索。如何创建以下查询?使用查询生成器API?
db.Item.runCommand("text", {search: "Awesome"});
这可能吗?或者如何执行本机查询。
确保mongodb的文本搜索是启用的
http://docs.mongodb.org/manual/tutorial/enable-text-search/第一步是在文档中创建一个索引: use Doctrine'ODM'MongoDB'Mapping'Annotations as MongoDB;
/**
* Class Item
* @MongoDB'Document(repositoryClass="Acme'StoreBundle'ItemRepository")
* @MongoDB'Indexes({
* @MongoDB'Index(keys={"title"="text"})
* })
*/
class Item
{
/**
* @MongoDB'Id
*/
protected $id;
//...
}
然后您可以创建模式以确保索引
php app/console doctrine:mongodb:schema:create
在您的自定义存储库中,您现在可以像这样查询命令:
http://symfony.com/doc/current/bundles/DoctrineMongoDBBundle/index.html custom-repository-classes
public function findFullText($searchTerm, $limit = 10)
{
$resultSet = new ArrayCollection();
//-- runCommand
$itemResultSet = $this->getDocumentManager()->getDocumentDatabase('AcmeStoreBundle:Item')->command([
'text' => 'Item',
'search' => $searchTerm,
'limit' => $limit
]);
foreach ($itemResultSet['results'] as $itemResult) {
$resultSet->add($this->uow->getOrCreateDocument(''Acme'StoreBundle'Document'Item', $itemResult['obj']));
}
return $resultSet;
}
这可能不是最复杂的方法。但是它将为您提供所需的文档集。