Foros del Web » Programando para Internet » PHP »

probemas en buscador

Estas en el tema de probemas en buscador en el foro de PHP en Foros del Web. Saludos, estoy haciendo un buscador y se me presenta el problema de que cuando hago una busque no siempre arroja resultados, asi tenga el contenido ...
  #1 (permalink)  
Antiguo 27/05/2009, 10:14
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
probemas en buscador

Saludos,
estoy haciendo un buscador y se me presenta el problema de que cuando hago una busque no siempre arroja resultados, asi tenga el contenido en la base de datos, aqui les dejo mi código.

Código PHP:
<?php
$server_link 
mysql_connect("localhost""ceval1""277iw7ro");
if(!
$server_link){
die(
"Falló la Conexión "mysql_error());
}
$db_selected mysql_select_db("ceval1"$server_link);
if(!
$db_selected){
 die(
"No se pudo seleccionar la Base de Datos "mysql_error());
}
if(isset(
$_GET['buscar']) && $_GET['buscar'] == 'Buscar'){
$frase addslashes($_GET['frase']);

$sqlBuscar mysql_query("SELECT titulo_consulta, contenido_consulta,
MATCH (titulo_consulta, contenido_consulta)
AGAINST ('$frase' IN BOOLEAN MODE) AS coincidencias
FROM consultas
WHERE MATCH (titulo_consulta, contenido_consulta)
AGAINST ('$frase' IN BOOLEAN MODE)
ORDER BY coincidencias DESC"
$server_link)
or die(
mysql_error()); 
$totalRows mysql_num_rows($sqlBuscar);

if(!empty(
$totalRows)){
echo 
stripslashes("<p>Su b&uacute;squeda arroj&oacute; <strong>$totalRows</strong> resultados para <strong>$frase</strong></p>"); 

while(
$row mysql_fetch_array($sqlBuscar)){
echo 
"<strong><a href='#'>$row[titulo_noticia]</a>:</strong> <em>Coincidencias: "round($row['coincidencias']) ."</em><br />";
echo 
"<p>".substr(strip_tags($row['contenido_consulta']), 0255)."...</p>";
}
}
elseif(empty(
$_GET['frase'])){
echo 
"Debe introducir una palabra o frase.";
}

elseif(
$totalRows == 0){
echo 
stripslashes("Su b&uacute;squeda no arroj&oacute; resultados para <strong>$frase</strong>");
}
}
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Prueba buscador</title>
</head>
y la direccion URL para que prueben 
http://cevalfes.com.ve/buscar.php

gracias de antemano!!!
<body>

<a href="<?php echo $_SERVER['PHP_SELF']; ?>">Prueba Buscador</a>
<form name="buscar" action="<?php $_SERVER['PHP_SELF'?>" method="get">
 Buscar: <input type="text" size="50" value="<?php echo $_GET['frase']; ?>" name="frase" />
 <input type="submit" name="buscar" value="Buscar" />
</form>


</body>
</html>
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #2 (permalink)  
Antiguo 27/05/2009, 10:21
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: probemas en buscador

Este es el que yo use y me resulta muy bien


SELECT MATCH(`Texto`) AGAINST ('$search_word') AS palabras
FROM `tabla1`
WHERE MATCH(`Texto`) AGAINST ('$search_word')
ORDER BY palabras DESC
  #3 (permalink)  
Antiguo 27/05/2009, 10:25
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: probemas en buscador

Acuerdate que las dos tablas en la base de datos deben estar como fulltext
  #4 (permalink)  
Antiguo 27/05/2009, 10:25
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: probemas en buscador

nada man y fijate hice lo q tu dijiste
Código PHP:
$sqlBuscar mysql_query("SELECT MATCH (titulo_consulta, contenido_consulta) 
AGAINST ('$frase' IN BOOLEAN MODE) AS coincidencias
FROM consultas
WHERE MATCH (titulo_consulta, contenido_consulta)
AGAINST ('$frase' IN BOOLEAN MODE)
ORDER BY coincidencias DESC"
$server_link
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #5 (permalink)  
Antiguo 27/05/2009, 10:27
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: probemas en buscador

fulltext????? o text???..
recuerda q hay
tinytext
mediumtext
longtext
text
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #6 (permalink)  
Antiguo 27/05/2009, 10:28
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: probemas en buscador

Las dos tablas estan como fulltext?
  #7 (permalink)  
Antiguo 27/05/2009, 10:30
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: probemas en buscador

DROP TABLE IF EXISTS `tbl_capitulos`;
CREATE TABLE IF NOT EXISTS `tbl_capitulos` (
`ID` int(11) unsigned NOT NULL AUTO_INCREMENT
`Texto` text NOT NULL,
PRIMARY KEY (`ID`),
FULLTEXT KEY `Texto` (`Texto`)
)



A esto me refiere tienes que crear un key que diga fulltext en el caso tuyo pon las nombres de las dos tablas que sean fulltext
  #8 (permalink)  
Antiguo 27/05/2009, 10:37
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: probemas en buscador

CREATE TABLE `consultas` (
`id_consulta` int(11) NOT NULL auto_increment,
`titulo_consulta` text NOT NULL,
`contenido_consulta` text NOT NULL,
`activo_consulta` int(11) NOT NULL default '0',
PRIMARY KEY (`id_consulta`)
) TYPE=MyISAM AUTO_INCREMENT=9 ;

q le hago?
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #9 (permalink)  
Antiguo 27/05/2009, 10:44
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: probemas en buscador

DROP TABLE IF EXISTS `consultas`;
CREATE TABLE IF NOT EXISTS `consultas` (
`id_consulta` int(11) NOT NULL AUTO_INCREMENT,
`titulo_consulta` text NOT NULL,
`contenido_consulta` text NOT NULL,
`activo_consulta` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id_consulta`),
FULLTEXT KEY `titulo_consulta` (`titulo_consulta`,`contenido_consulta`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
  #10 (permalink)  
Antiguo 27/05/2009, 10:49
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: probemas en buscador

mira esto

Error

consulta SQL:

CREATE TABLE IF NOT EXISTS `consultas` (
`id_consulta` int( 11 ) NOT NULL AUTO_INCREMENT ,
`titulo_consulta` text NOT NULL ,
`contenido_consulta` text NOT NULL ,
`activo_consulta` int( 11 ) NOT NULL DEFAULT '0',
PRIMARY KEY ( `id_consulta` ) ,
FULLTEXT KEY `titulo_consulta` ( `titulo_consulta` , `contenido_consulta` )
) ENGINE = MYISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT =9;

MySQL ha dicho: Documentación
#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DEFAULT CHARSET=latin1 AUTO_INCREMENT=9' at line 8
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #11 (permalink)  
Antiguo 27/05/2009, 10:54
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: probemas en buscador

OK pon este

DROP TABLE IF EXISTS `consultas`;
CREATE TABLE IF NOT EXISTS `consultas` (
`id_consulta` int( 11 ) NOT NULL AUTO_INCREMENT ,
`titulo_consulta` text NOT NULL ,
`contenido_consulta` text NOT NULL ,
`activo_consulta` int( 11 ) NOT NULL DEFAULT '0',
PRIMARY KEY ( `id_consulta` ) ,
FULLTEXT KEY `titulo_consulta` ( `titulo_consulta` , `contenido_consulta` )
) ENGINE = MYISAM;
  #12 (permalink)  
Antiguo 27/05/2009, 11:00
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: probemas en buscador

OMG.. ok funciona pero ahora pon en el buscador la palabra examen
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #13 (permalink)  
Antiguo 27/05/2009, 11:01
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: probemas en buscador

No entendi
  #14 (permalink)  
Antiguo 27/05/2009, 11:07
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: probemas en buscador

http://cevalfes.com.ve/buscar.php
inserta la palabra examen y fijate los resultados.... no deberian ser vacios y sigue la cuestion de que si colocas ciertas palabras no me da resultados aun cuando deberia darlos
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #15 (permalink)  
Antiguo 27/05/2009, 11:35
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: probemas en buscador

quitale IN BOOLEAN MODE

Código PHP:
$sqlBuscar mysql_query("SELECT MATCH (titulo_consulta, contenido_consulta)  
AGAINST ('$frase' IN BOOLEAN MODE) AS coincidencias 
FROM consultas 
WHERE MATCH (titulo_consulta, contenido_consulta) 
AGAINST ('$frase' IN BOOLEAN MODE) 
ORDER BY coincidencias DESC"
$server_link
Código PHP:
$sqlBuscar mysql_query("SELECT MATCH (titulo_consulta, contenido_consulta)  
AGAINST ('$frase') AS coincidencias 
FROM consultas 
WHERE MATCH (titulo_consulta, contenido_consulta) 
AGAINST ('$frase') 
ORDER BY coincidencias DESC"
$server_link
Estoy solamente viendo que pasa
  #16 (permalink)  
Antiguo 27/05/2009, 12:40
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: probemas en buscador

ahora no busca nada
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #17 (permalink)  
Antiguo 27/05/2009, 12:56
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: probemas en buscador

dame todo a ver si te puedo ayudar o sea dame el create el insert el codigo de busqueda y el php que busca, yo trato de ver que puedo hacer aca
  #18 (permalink)  
Antiguo 27/05/2009, 13:01
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: probemas en buscador

Ok, ya veo algo trata de escribirle el *

Código PHP:
$sqlBuscar mysql_query("SELECT *, MATCH (titulo_consulta, contenido_consulta)   
AGAINST ('$frase') AS coincidencias  
FROM consultas  
WHERE MATCH (titulo_consulta, contenido_consulta)  
AGAINST ('$frase')  
ORDER BY coincidencias DESC"
$server_link
  #19 (permalink)  
Antiguo 27/05/2009, 13:09
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: probemas en buscador

el unico codigo es el q esta arriba en el primer post
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #20 (permalink)  
Antiguo 27/05/2009, 13:34
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: probemas en buscador

Trate el codigo en mi computadora, cree la base de datos inserte varios campos, no hice ningun cambio al primer codigo, luego escribi la palabra examen y me salieron lineas que tiene esa palabra
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:42.