Page 1 sur 1

La recherche ne fonctionne pas

Posté : ven. 28 févr. 2014 10:53
par thomasbertoux
Bonjour,
Je suis en version 3.0.6 et le champ recherche en haut à droite de la page ne me retourne aucun résultat, or ma recherche contient un mot qui est présent dans certains titre de ticket.
Etes-vous au courant de cela ?
Merci
Cdt

Re: La recherche ne fonctionne pas

Posté : ven. 28 févr. 2014 17:19
par clement1086
Bonjour,

Effectivement, les éléments qui n'ont pas de ligne dans le thread ne sont pas retrouvés dans la recherche...

A mon avis il faudrait modifier la page searchengine.php comme ça

Code : Tout sélectionner

<?php
################################################################################
# @Name : searchengine.php
# @Desc : search engine in database tickets
# @call : /dashboard.php
# @paramters : keywords
# @Autor : Flox
# @Create : 12/01/2011
# @Update : 03/09/2013
# @Version : 2.9
################################################################################

//initialize Session variables
if(!isset($_SESSION['user_id'])) $_SESSION['user_id'] = '';

//case when keywords contain '
$keywords = str_replace("'","\'",$keywords);

//keywords table space separation
$keyword=explode(" ",$keywords);

//count $keywords
$nbkeyword= sizeof($keyword);

if ($nbkeyword==2)
{
	$from = "
		FROM tincidents
		LEFT JOIN tcategory ON tincidents.category=tcategory.id
		LEFT JOIN tsubcat ON tincidents.subcat=tsubcat.id
		LEFT JOIN tstates ON tincidents.state=tstates.id
		LEFT JOIN tthreads ON tincidents.id=tthreads.ticket
		WHERE
		(tincidents.title LIKE '%$keyword[0]%' OR 
		tincidents.description LIKE '%$keyword[0]%' OR 
		tthreads.text LIKE '%$keyword[0]%' OR
		tsubcat.name LIKE '$keyword[0]' OR
		tcategory.name LIKE '$keyword[0]' OR
		tincidents.id = '$keyword[0]' OR
		tincidents.user LIKE (SELECT max(id) FROM tusers where firstname LIKE '%$keyword[0]%' or lastname LIKE '%$keyword[0]%'))
		AND
		(tincidents.title LIKE '%$keyword[1]%' OR 
		tincidents.description LIKE '%$keyword[1]%' OR 
		tthreads.text LIKE '%$keyword[1]%' OR
		tsubcat.name LIKE '$keyword[1]' OR
		tcategory.name LIKE '$keyword[1]' OR
		tincidents.id = '$keyword[1]' OR
		tincidents.user LIKE (SELECT max(id) FROM tusers where firstname LIKE '%$keyword[1]%' or lastname LIKE '%$keyword[1]%'))
		AND disable='0'
	"; 
	// $from = "
		// FROM tincidents, tstates, tthreads 
		// WHERE
		// tincidents.state=tstates.id AND
		// tincidents.id=tthreads.ticket AND
		// (title LIKE '%$keyword[0]%' OR 
		// tincidents.description LIKE '%$keyword[0]%' OR 
		// tthreads.text LIKE '%$keyword[0]%' OR
		// tincidents.id = '$keyword[0]' OR
		// tincidents.user LIKE (SELECT max(id) FROM tusers where firstname LIKE '%$keyword[0]%' or lastname LIKE '%$keyword[0]%'))
		// AND
		// (tincidents.title LIKE '%$keyword[1]%' OR 
		// tincidents.description LIKE '%$keyword[1]%' OR 
		// tthreads.text LIKE '%$keyword[1]%' OR
		// tincidents.id LIKE '$keyword[1]' OR
		// tincidents.user LIKE (SELECT max(id) FROM tusers where firstname LIKE '%$keyword[1]%' or lastname LIKE '%$keyword[1]%'))
		// AND disable='0'
	// "; 
}
else if ($nbkeyword==3)
{
	$from = "
		FROM tincidents
		LEFT JOIN tcategory ON tincidents.category=tcategory.id
		LEFT JOIN tsubcat ON tincidents.subcat=tsubcat.id
		LEFT JOIN tstates ON tincidents.state=tstates.id
		LEFT JOIN tthreads ON tincidents.id=tthreads.ticket
		WHERE
		(tincidents.title LIKE '%$keyword[0]%' OR 
		tincidents.description LIKE '%$keyword[0]%' OR 
		tthreads.text LIKE '%$keyword[0]%' OR
		tsubcat.name LIKE '$keyword[0]' OR
		tcategory.name LIKE '$keyword[0]' OR
		tincidents.id = '$keyword[0]' OR
		tincidents.user LIKE (SELECT max(id) FROM tusers where firstname LIKE '%$keyword[0]%' or lastname LIKE '%$keyword[0]%'))
		AND
		(tincidents.title LIKE '%$keyword[1]%' OR 
		tincidents.description LIKE '%$keyword[0]%' OR 
		tthreads.text LIKE '%$keyword[0]%' OR
		tsubcat.name LIKE '$keyword[0]' OR
		tcategory.name LIKE '$keyword[0]' OR
		tincidents.id = '$keyword[0]' OR
		tincidents.user LIKE (SELECT max(id) FROM tusers where firstname LIKE '%$keyword[0]%' or lastname LIKE '%$keyword[0]%'))
		AND
		(tincidents.title LIKE '%$keyword[2]%' OR 
		tincidents.description LIKE '%$keyword[2]%' OR 
		tthreads.text LIKE '%$keyword[2]%' OR
		tsubcat.name LIKE '$keyword[2]' OR
		tcategory.name LIKE '$keyword[2]' OR
		tincidents.id = '$keyword[2]' OR
		tincidents.user LIKE (SELECT max(id) FROM tusers where firstname LIKE '%$keyword[2]%' or lastname LIKE '%$keyword[2]%'))
		AND disable='0'
	";
	// $from = "
		// FROM tincidents, tstates, tthreads 
		// WHERE
		// tincidents.state=tstates.id AND
		// tincidents.id=tthreads.ticket AND
		// (tincidents.title LIKE '%$keyword[0]%' OR 
		// tincidents.description LIKE '%$keyword[0]%' OR 
		// tthreads.text LIKE '%$keyword[0]%' OR
		// tincidents.id = '$keyword[0]' OR
		// tincidents.user LIKE (SELECT max(id) FROM tusers where firstname LIKE '%$keyword[0]%' or lastname LIKE '%$keyword[0]%'))
		// AND
		// (tincidents.title LIKE '%$keyword[1]%' OR 
		// tincidents.description LIKE '%$keyword[1]%' OR 
		// tthreads.text LIKE '%$keyword[1]%' OR
		// tincidents.id LIKE '$keyword[1]' OR
		// tincidents.user LIKE (SELECT max(id) FROM tusers where firstname LIKE '%$keyword[1]%' or lastname LIKE '%$keyword[1]%'))
		// AND
		// (tincidents.title LIKE '%$keyword[2]%' OR 
		// tincidents.description LIKE '%$keyword[2]%' OR 
		// tthreads.text LIKE '%$keyword[2]%' OR
		// tincidents.id LIKE '$keyword[2]' OR
		// tincidents.user LIKE (SELECT max(id) FROM tusers where firstname LIKE '%$keyword[2]%' or lastname LIKE '%$keyword[2]%'))
		// AND disable='0'
	// "; 
}

else
{
$from = "
	FROM tincidents
	LEFT JOIN tcategory ON tincidents.category=tcategory.id
	LEFT JOIN tsubcat ON tincidents.subcat=tsubcat.id
	LEFT JOIN tstates ON tincidents.state=tstates.id
	LEFT JOIN tthreads ON tincidents.id=tthreads.ticket
	WHERE
	(
	tincidents.title LIKE '%$keyword[0]%' OR 
	tincidents.description LIKE '%$keyword[0]%' OR 
	tthreads.text LIKE '%$keyword[0]%' OR
	tsubcat.name LIKE '$keyword[0]' OR
	tcategory.name LIKE '$keyword[0]' OR
	tincidents.id = '$keyword[0]' OR
	tincidents.user LIKE (SELECT max(id) FROM tusers where firstname LIKE '%$keyword[0]%' or lastname LIKE '%$keyword[0]%')
	)
	AND disable='0'
"; 	
}

// else
// {
// $from = "
	// FROM  tincidents, tcategory, tsubcat, tstates, tthreads 
	// WHERE
	// tincidents.state=tstates.id AND
	// tincidents.subcat=tsubcat.id AND
	// tincidents.category=tcategory.id AND
	// tincidents.id=tthreads.ticket AND
	// (
	// tincidents.title LIKE '%$keyword[0]%' OR 
	// tincidents.description LIKE '%$keyword[0]%' OR 
	// tthreads.text LIKE '%$keyword[0]%' OR
	// tsubcat.name LIKE '$keyword[0]' OR
	// tcategory.name LIKE '$keyword[0]' OR
	// tincidents.id = '$keyword[0]' OR
	// tincidents.user LIKE (SELECT max(id) FROM tusers where firstname LIKE '%$keyword[0]%' or lastname LIKE '%$keyword[0]%')
	// )
	// AND disable='0'
// "; 	
// }	
?>
Clément

Re: La recherche ne fonctionne pas

Posté : mar. 4 mars 2014 20:07
par Flox
Effectivement cela fonctionnerai mais la jointure gauche entraîne une grande perte de performance sur les grosses bases.

Normalement tout ticket à obligatoirement une entrée thread avec la date d'ouverture.

Vérifier que vous avez également bien une catégorie de renseignée.

cdt

Re: La recherche ne fonctionne pas

Posté : mer. 4 juin 2014 07:35
par Ptitvincou
Bonjour,

Je me permets de remonter ce post pour une raison simple,
lors du basculement d'une base de données de la version 2 a la version 3, la table thread n'est pas remplie .... donc on perd l'historique dans la recherche.

Cordialement,

Re: La recherche ne fonctionne pas

Posté : mar. 15 juil. 2014 20:21
par Flox
Bonjour,

pouvez vous essayer de passer cette requête et me redire. merci

Code : Tout sélectionner

INSERT INTO  `tthreads` (
`id` ,
`ticket` ,
`date` ,
`author` ,
`text` ,
`type` ,
`tech1` ,
`tech2` ,
`group1` ,
`group2` ,
`user`
)
SELECT NULL,id,0,0,0,0,9,0,0,0 FROM tincidents WHERE tincidents.disable=0 AND id NOT IN (SELECT ticket FROM tthreads);