public function findByTerms($queryString, $withNonActif = false, $limit = 1000, $mixWith = false) { $terms = explode(" ", trim(preg_replace("/[ ]+/", " ", $queryString))); $results = null; foreach ($terms as $term) { if (strlen($term) < 2) { continue; } $q = $this->createQueryBuilder(); $q->addOr($q->expr()->field('identifiant')->equals(new \MongoRegex('/.*' . $term . '.*/i')))->addOr($q->expr()->field('raisonSociale')->equals(new \MongoRegex('/.*' . RechercheTool::getCorrespondances($term) . '.*/i')))->addOr($q->expr()->field('adresse.adresse')->equals(new \MongoRegex('/.*' . RechercheTool::getCorrespondances($term) . '.*/i')))->addOr($q->expr()->field('adresse.codePostal')->equals(new \MongoRegex('/.*' . $term . '.*/i')))->addOr($q->expr()->field('adresse.commune')->equals(new \MongoRegex('/.*' . RechercheTool::getCorrespondances($term) . '.*/i'))); if (!$withNonActif) { $q->field('actif')->equals(true); } $societes = $q->limit($limit)->getQuery()->execute(); $currentResults = array(); foreach ($societes as $societe) { if ($mixWith) { $currentResults[$societe->getId()] = array("doc" => $societe, "score" => "1", "instance" => "Societe"); } else { $currentResults[$societe->getId()] = $societe->getIntitule(); } } if (!is_null($results)) { $results = array_intersect_assoc($results, $currentResults); } else { $results = $currentResults; } } return is_null($results) ? array() : $results; }
public function findByTerms($queryString) { $terms = explode(" ", trim(preg_replace("/[ ]+/", " ", $queryString))); $results = null; foreach ($terms as $term) { if (strlen($term) < 2) { continue; } $q = $this->createQueryBuilder(); $q->field('cloture')->equals(false); $q->field('numeroFacture')->notEqual(null); if (preg_match('/^[0-9]+\\.[0-9]+$/', $term)) { $nbInf = $term - 0.0001; $nbSup = $term + 0.0001; $q->addOr($q->expr()->field('montantTTC')->lt($nbSup)->gt($nbInf))->addOr($q->expr()->field('montantAPayer')->lt($nbSup)->gt($nbInf)); } else { $q->addOr($q->expr()->field('destinataire.nom')->equals(new \MongoRegex('/.*' . RechercheTool::getCorrespondances($term) . '.*/i')))->addOr($q->expr()->field('numeroFacture')->equals(new \MongoRegex('/.*' . $term . '.*/i'))); } $factures = $q->limit(1000)->getQuery()->execute(); $currentResults = array(); foreach ($factures as $facture) { $currentResults[$facture->getId()] = $facture->__toString(); } if (!is_null($results)) { $results = array_intersect_assoc($results, $currentResults); } else { $results = $currentResults; } } return is_null($results) ? array() : $results; }
public function findByTerms($queryString) { $terms = explode(" ", trim(preg_replace("/[ ]+/", " ", $queryString))); $results = null; foreach ($terms as $term) { if (strlen($term) < 2) { continue; } $q = $this->createQueryBuilder(); $etablissements = $q->addOr($q->expr()->field('identifiant')->equals(new \MongoRegex('/.*' . $term . '.*/i')))->addOr($q->expr()->field('nom')->equals(new \MongoRegex('/.*' . RechercheTool::getCorrespondances($term) . '.*/i')))->addOr($q->expr()->field('adresse.adresse')->equals(new \MongoRegex('/.*' . RechercheTool::getCorrespondances($term) . '.*/i')))->addOr($q->expr()->field('adresse.codePostal')->equals(new \MongoRegex('/.*' . $term . '.*/i')))->addOr($q->expr()->field('adresse.commune')->equals(new \MongoRegex('/.*' . RechercheTool::getCorrespondances($term) . '.*/i')))->field('actif')->equals(true)->limit(1000)->getQuery()->execute(); $currentResults = array(); foreach ($etablissements as $etablissement) { $currentResults[$etablissement->getId()] = $etablissement->getIntitule(); } if (!is_null($results)) { $results = array_intersect_assoc($results, $currentResults); } else { $results = $currentResults; } } return is_null($results) ? array() : $results; }