0
mongodb로 전체 텍스트 검색을 만들고 싶습니다. 다음 쿼리를 어떻게 만들 수 있습니까? 쿼리 빌더 API를 사용합니까?Doctrine MongoDB ODM 검색 쿼리
db.Item.runCommand("text", {search: "Awesome"});
가능합니까? 또는 네이티브 쿼리를 어떻게 수행 할 수 있습니까?
도움 주셔서 감사합니다.
mongodb로 전체 텍스트 검색을 만들고 싶습니다. 다음 쿼리를 어떻게 만들 수 있습니까? 쿼리 빌더 API를 사용합니까?Doctrine MongoDB ODM 검색 쿼리
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;
}
이 probaby 가장 정교한 방법이 아닙니다. 그러나 원하는 문서 세트를 제공합니다.