iGalerie

Vous n'êtes pas identifié(e).

Annonce

Un message d'erreur qui s'affiche ? Un mot de passe oublié ? L'ajout de fichier qui ne marche pas ?
Pensez d'abord à lire la FAQ, vous y trouverez probablement une solution à votre problème.

#1 08-04-2022 11:13:35

ehquionest
Membre
Inscription : 28-02-2010
Messages : 49

Fonction recherche avancée dans les "choux" ?

Bonjour,
Je suis un utilisateur de iGalerie depuis plusieurs années maintenant et il faut bien le dire, c'est un outil FABULEUX !
Je me suis cependant rendu compte ce matin que lorsque j'effectue une recherche avancée avec 3 mots, je n'obtiens que des résultats partiels. Je m'explique : le résultat de ma recherche avancée me propose une série d'images (recherchées à partir des tags), mais je sais que j'ai d'autres images qui devraient y apparaître également et qui sont bien présentes dans mes galeries avec les tags correspondant. Or ces images n'apparaissent pas dans le résultat de recherche...
Une idée du soucis ?
Merci à vous !
Cordialement,
Samuel

#4
Date : 2021-12-27 10:34:17.448379
Version : 3.0
Type : PHP_WARNING
Fichier : includes/core/Update.class.php
Ligne : 30
Page : dashboard
Message : file_get_contents(http://www.igalerie.org/latestversion.txt?93qQY5g19O1uYn1Uq0154cnUTE4vmq8L): failed to open stream: no suitable wrapper could be found
Trace : #1 admin/index.php(26): Admin::start()#2 includes/admin/classes/Admin.class.php(764): require_once('/home/clients/7...')#3 includes/admin/dashboard.php(35): AdminDashboard::newVersion()#4 includes/admin/classes/AdminDashboard.class.php(155): Update::getLatestVersion()#5 includes/core/Update.class.php(30): file_get_contents('http://www.igal...')

#3
Date : 2020-04-10 12:58:50.910697
Version : 3.0
Type : PHP_USER_WARNING
Fichier : includes/core/Update.class.php
Ligne : 33
Page : dashboard
Message : file error
Trace : #1 admin/index.php(26): Admin::start()#2 includes/admin/classes/Admin.class.php(764): require_once('/home/clients/7...')#3 includes/admin/dashboard.php(35): AdminDashboard::newVersion()#4 includes/admin/classes/AdminDashboard.class.php(155): Update::getLatestVersion()#5 includes/core/Update.class.php(33): trigger_error('file error', 512)

#2
Date : 2020-04-10 12:58:50.910378
Version : 3.0
Type : PHP_WARNING
Fichier : includes/core/Update.class.php
Ligne : 30
Page : dashboard
Message : file_get_contents(http://www.igalerie.org/latestversion.txt?66pw1yQYza7CT11i0SMjq27vWR3OsNUW): failed to open stream: no suitable wrapper could be found
Trace : #1 admin/index.php(26): Admin::start()#2 includes/admin/classes/Admin.class.php(764): require_once('/home/clients/7...')#3 includes/admin/dashboard.php(35): AdminDashboard::newVersion()#4 includes/admin/classes/AdminDashboard.class.php(155): Update::getLatestVersion()#5 includes/core/Update.class.php(30): file_get_contents('http://www.igal...')

#1
Date : 2020-04-10 12:58:50.909422
Version : 3.0
Type : PHP_WARNING
Fichier : includes/core/Update.class.php
Ligne : 30
Page : dashboard
Message : file_get_contents(): http:// wrapper is disabled in the server configuration by allow_url_fopen=0
Trace : #1 admin/index.php(26): Admin::start()#2 includes/admin/classes/Admin.class.php(764): require_once('/home/clients/7...')#3 includes/admin/dashboard.php(35): AdminDashboard::newVersion()#4 includes/admin/classes/AdminDashboard.class.php(155): Update::getLatestVersion()#5 includes/core/Update.class.php(30): file_get_contents('http://www.igal...')

Dernière modification par ehquionest (08-04-2022 13:30:22)

Hors ligne

#2 08-04-2022 11:48:28

David
Développeur d'iGalerie
Inscription : 12-05-2006
Messages : 4 334
Site Web

Re : Fonction recherche avancée dans les "choux" ?

Salut,

Je viens de faire des tests de mon coté et je ne constate aucun problème. Peux-tu donner un exemple précis ? Et est-ce que la case "Rechercher tous les mots" est décochée ?

Hors ligne

#3 08-04-2022 12:08:41

ehquionest
Membre
Inscription : 28-02-2010
Messages : 49

Re : Fonction recherche avancée dans les "choux" ?

Alors comme exemple précis : je recherche dans ma galerie toutes les images qui ont au moins les mots "ours polaire" ET "wrangel" (= une localité géographique) dans les tags uniquement (vu que je n'utilise pas "titre" et "description").

- Si je ne coche pas la case "Rechercher tous les mots", le résultat de recherche me donne des photos d'ours, quelque soit l'espèce (brun ou polaire) mais aussi les photos taguées avec la destination (wrangel) uniquement (donc sans ours)...

- Si je coche la case "Rechercher tous les mots", le résultat de recherche ne me donne aucun résultat...

Dernière modification par ehquionest (08-04-2022 12:12:02)

Hors ligne

#4 08-04-2022 14:29:18

David
Développeur d'iGalerie
Inscription : 12-05-2006
Messages : 4 334
Site Web

Re : Fonction recherche avancée dans les "choux" ?

D'accord, je vois le soucis. Le problème vient du fait que la recherche s'effectue dans un seul tag à la fois, donc les trois mots entrés doivent se trouver dans un seul et même tag...

J'ai une solution à proposer qui devrait résoudre ce problème. Il faut remplacer le bloc de code des lignes 524-537 du fichier includes/core/Search.class.php :

$search_tags['sql'] = sprintf($this->_options(), $search_tags['sql']);
$sql = "SELECT i.item_id
		  FROM {tags} AS t
	 LEFT JOIN {tags_items} AS ti
			ON t.tag_id = ti.tag_id
	 LEFT JOIN {items} AS i
			ON i.item_id = ti.item_id
			   $sql_from
		 WHERE " . $search_tags['sql']
				 . $sql_where;
if (DB::execute($sql, $search_tags['params']))
{
	$items_id = array_merge($items_id, DB::fetchAll('item_id', 'item_id'));
}

par celui-ci :

if (empty($this->options['all_words']))
{
	$search_tags['sql'] = sprintf($this->_options(), $search_tags['sql']);
	$sql = "SELECT i.item_id
			  FROM {tags} AS t
		 LEFT JOIN {tags_items} AS ti
				ON t.tag_id = ti.tag_id
		 LEFT JOIN {items} AS i
				ON i.item_id = ti.item_id
				   $sql_from
			 WHERE " . $search_tags['sql']
					 . $sql_where;
	if (DB::execute($sql, $search_tags['params']))
	{
		$items_id = array_merge($items_id, DB::fetchAll('item_id', 'item_id'));
	}
}
else
{
	$sql_search_tags = explode(' AND ', substr($search_tags['sql'], 2, -2));
	$sql_search_params = array_values($search_tags['params']);
	if (count($sql_search_tags) < 10)
	{
		$tags_items_id = [];
		foreach ($sql_search_tags as $k => $sql_tag)
		{
			$sql_tag = preg_replace('`:q_\d`', '?', $sql_tag);
			$sql = "SELECT i.item_id
					  FROM {tags} AS t
				 LEFT JOIN {tags_items} AS ti
						ON t.tag_id = ti.tag_id
				 LEFT JOIN {items} AS i
						ON i.item_id = ti.item_id
						   $sql_from
					 WHERE ($sql_tag)" . $sql_where;
			if (DB::execute($sql, $sql_search_params[$k]))
			{
				$tags_items_id[] = DB::fetchAll('item_id', 'item_id');
			}
		}
		if ($tags_items_id)
		{
			foreach ($tags_items_id[0] as &$id)
			{
				for ($i = 0; $i < count($tags_items_id); $i++)
				{
					if (!in_array($id, $tags_items_id[$i]))
					{
						continue 2;
					}
				}
				$items_id[] = $id;
			}
		}
	}
}

Ainsi, la recherche s'effectuera différemment selon que la case "Rechercher tous les mots" est activée ou non.

Hors ligne

#5 08-04-2022 14:57:47

ehquionest
Membre
Inscription : 28-02-2010
Messages : 49

Re : Fonction recherche avancée dans les "choux" ?

Whoua, fabuleux, un grand merci ! Vous faites un boulot fantastique !

Hors ligne

Pied de page des forums