Line 146... |
Line 146... |
146 |
$retenus = array();
|
146 |
$retenus = array();
|
147 |
foreach ($this->noms as $cle => $valeurs) {
|
147 |
foreach ($this->noms as $cle => $valeurs) {
|
148 |
if ($valeurs['nom_retenu.libelle'] == null) {//sans correspondances
|
148 |
if ($valeurs['nom_retenu.libelle'] == null) {//sans correspondances
|
149 |
$sansCorres[$cle] = $valeurs['nom_sci_complet'];
|
149 |
$sansCorres[$cle] = $valeurs['nom_sci_complet'];
|
150 |
} elseif ($valeurs['retenu'] == 'true') { // retenus
|
150 |
} elseif ($valeurs['retenu'] == 'true') { // retenus
|
151 |
if (preg_match('/ x |x /',$valeurs['nom_sci'] ) ) {
|
151 |
if (preg_match('/ x |^x /',$valeurs['nom_sci'] ) ) {
|
152 |
//hybrides
|
152 |
//hybrides
|
153 |
$retenus[2][$cle] = $this->retournerInfosNomRetenu($cle,$valeurs['nom_sci_complet'], $valeurs['rang.libelle']);
|
153 |
$retenus[2][$cle] = $this->retournerInfosNomRetenu($cle,$valeurs['nom_sci_complet'], $valeurs['rang.libelle']);
|
154 |
} elseif (preg_match('/^'.strtolower($this->parametres->masqueRecherche).' |^'.strtolower($this->parametres->masqueRecherche).'$/', strtolower($valeurs['nom_sci']) ) ) {
|
154 |
} elseif (strripos($valeurs['nom_sci_complet'], $this->parametres->masqueRecherche) === 0) {//preg_match('/^'.strtolower($this->parametres->masqueRecherche).' |^'.strtolower($this->parametres->masqueRecherche).'$/', strtolower($valeurs['nom_sci']) ) ) {
|
155 |
//commence par
|
155 |
//commence par
|
156 |
$retenus[0][$cle] = $this->retournerInfosNomRetenu($cle,$valeurs['nom_sci_complet'], $valeurs['rang.libelle']);
|
156 |
$retenus[0][$cle] = $this->retournerInfosNomRetenu($cle,$valeurs['nom_sci_complet'], $valeurs['rang.libelle']);
|
157 |
} else {
|
157 |
} else {
|
158 |
//contient
|
158 |
//contient
|
159 |
$retenus[3][$cle] = $this->retournerInfosNomRetenu($cle,$valeurs['nom_sci_complet'], $valeurs['rang.libelle']);
|
159 |
$retenus[3][$cle] = $this->retournerInfosNomRetenu($cle,$valeurs['nom_sci_complet'], $valeurs['rang.libelle']);
|
160 |
}
|
160 |
}
|
161 |
} else {//synonymes
|
161 |
} else {//synonymes
|
162 |
$idNomRetenu = $valeurs['nom_retenu.id'];
|
162 |
$idNomRetenu = $valeurs['nom_retenu.id'];
|
163 |
if (preg_match('/'.strtolower($this->parametres->masqueRecherche).'/', strtolower($valeurs['nom_retenu.libelle'])) == 0) {
|
163 |
if (in_array($valeurs['nom_retenu.id'], array_keys($this->noms)) == false) {
|
164 |
//synonymes dont le nom retenu ne contient pas la requête
|
164 |
//synonymes dont le nom retenu n'est pas un résultat de recherche
|
165 |
$retenus[1][$idNomRetenu] = $this->retournerInfosNomRetenu($cle,$valeurs['nom_retenu_complet'], $valeurs['rang.libelle']);
|
165 |
$retenus[1][$idNomRetenu] = $this->retournerInfosNomRetenu($cle,$valeurs['nom_retenu_complet'], $valeurs['rang.libelle']);
|
166 |
$this->infosPourTpl['taxons'][$idNomRetenu] = $valeurs['num_taxonomique']; //num taxon pour images coste
|
166 |
$this->infosPourTpl['taxons'][$idNomRetenu] = $valeurs['num_taxonomique']; //num taxon pour images coste
|
167 |
}
|
167 |
}
|
168 |
$synonymes[$idNomRetenu][] = $this->retournerInfosSynonyme($cle, $valeurs);
|
168 |
$synonymes[$idNomRetenu][] = $this->retournerInfosSynonyme($cle, $valeurs);
|
169 |
}
|
169 |
}
|
Line 187... |
Line 187... |
187 |
$infos['nomSci'] = $valeurs['nom_sci_complet'];
|
187 |
$infos['nomSci'] = $valeurs['nom_sci_complet'];
|
188 |
$infos['urlFiche'] = $this->urls->obtenirUrlFiche($cle, $this->parametres->typeNom, $this->parametres->masqueRecherche, $valeurs['nom_retenu.libelle']);
|
188 |
$infos['urlFiche'] = $this->urls->obtenirUrlFiche($cle, $this->parametres->typeNom, $this->parametres->masqueRecherche, $valeurs['nom_retenu.libelle']);
|
189 |
return $infos;
|
189 |
return $infos;
|
190 |
}
|
190 |
}
|
191 |
public function trier() {
|
191 |
public function trier() {
|
192 |
if ($this->donnerNombreResultatRetenus() <= 3) { // classement par score
|
192 |
/*if (count($this->infosPourTpl['noms']) <= 1) { // classement par score
|
193 |
$nomsRetenus = array();
|
193 |
$nomsRetenus = array();
|
194 |
foreach ($this->infosPourTpl['noms'] as $categorie) { //ote la division des retenus
|
194 |
foreach ($this->infosPourTpl['noms'] as $categorie) { //ote la division des retenus
|
195 |
$nomsRetenus += $categorie;
|
195 |
$nomsRetenus += $categorie;
|
196 |
}
|
196 |
}
|
197 |
$this->ajouterAuxNomsScoreSimilariteAvec($this->parametres->masqueRecherche);
|
197 |
$this->ajouterAuxNomsScoreSimilariteAvec($this->parametres->masqueRecherche);
|
Line 199... |
Line 199... |
199 |
$this->trieur->setChampsEtOrdres(array('score' => SORT_DESC));
|
199 |
$this->trieur->setChampsEtOrdres(array('score' => SORT_DESC));
|
200 |
$this->infosPourTpl['noms'] = $this->trieur->trier();
|
200 |
$this->infosPourTpl['noms'] = $this->trieur->trier();
|
201 |
$this->infosPourTpl['nomsSansCorrespondance'] =
|
201 |
$this->infosPourTpl['nomsSansCorrespondance'] =
|
202 |
$this->classerAlphabetiquement('nomSciRetenu', $this->infosPourTpl['nomsSansCorrespondance'] );
|
202 |
$this->classerAlphabetiquement('nomSciRetenu', $this->infosPourTpl['nomsSansCorrespondance'] );
|
203 |
} else { // classement alphabétique
|
203 |
} else { // classement alphabétique
|
- |
|
204 |
*/
|
204 |
$nomsRetenus = array();
|
205 |
$nomsRetenus = array();
|
205 |
foreach ($this->infosPourTpl['noms'] as $categorie => $valeurs ) { //classement alpha par groupes
|
206 |
foreach ($this->infosPourTpl['noms'] as $categorie => $valeurs ) { //classement alpha par groupes
|
206 |
$nomsRetenus += $this->classerAlphabetiquement('nomSciRetenu', $valeurs);
|
207 |
$nomsRetenus += $this->classerAlphabetiquement('nomSciRetenu', $valeurs);
|
207 |
}
|
208 |
}
|
208 |
$this->infosPourTpl['noms'] = $nomsRetenus;
|
209 |
$this->infosPourTpl['noms'] = $nomsRetenus;
|
209 |
$this->infosPourTpl['nomsSansCorrespondance'] =
|
210 |
$this->infosPourTpl['nomsSansCorrespondance'] =
|
210 |
$this->classerAlphabetiquement('nomSciRetenu', $this->infosPourTpl['nomsSansCorrespondance'] );
|
211 |
$this->classerAlphabetiquement('nomSciRetenu', $this->infosPourTpl['nomsSansCorrespondance'] );
|
211 |
}
|
- |
|
212 |
}
|
- |
|
213 |
private function donnerNombreResultatRetenus() {
|
- |
|
214 |
$nbre = 0;
|
- |
|
215 |
foreach ($this->infosPourTpl['noms'] as $lignes) {
|
- |
|
216 |
$nbre += count($lignes);
|
- |
|
217 |
if ($nbre >= 3 ) {
|
- |
|
218 |
break;
|
- |
|
219 |
}
|
212 |
//}
|
220 |
}
|
- |
|
221 |
return $nbre;
|
- |
|
222 |
}
|
213 |
}
|
Line 223... |
Line 214... |
223 |
|
214 |
|
224 |
private function ajouterAuxNomsScoreSimilariteAvec($masque) {
|
215 |
private function ajouterAuxNomsScoreSimilariteAvec($masque) {
|
225 |
$nom_demande_ss = strtolower($this->manipulateurDeChaine->supprimerAccents($masque));
|
216 |
$nom_demande_ss = strtolower($this->manipulateurDeChaine->supprimerAccents($masque));
|