En teoría, el LIKE de mysql no diferencia entra mayúsculas y
minúsculas, pero me he encontrado un bug, y es que sí detecta la
diferencia cuando las letras están acentuadas.
Por ejemplo:
Para buscar Sevilla puedo hacerlo buscando Sevilla o sevilla.
Para buscar Cáceres puedo hacerlo buscando Cáceres o cáceres, pero no
Caceres.
Para buscar Álava, no funciona buscarlo por alava, ni álava, ni Alava.
Un caso opuesto: para encontrar Cáceres no funciona buscarlo como
CÁCERES, pero si como CáCERES. Esto demuestra que el problema está en
las mayúsculas con tilde.
La recomendación quizás sea aplicar un filtro previo a la búsqueda que
pase a minúscula las palabras mayúsculas acentuadas o viceversa o a
ambas, y realizar dos búsquedas.
La instrucción de conversión en php es:
$string = str_replace('Á', 'á', $string); //Para letras sueltas
$string = strtolower($string);
$string = strtoupper($string);
On 1 dic, 17:37, Sergio Villalba <[email protected]> wrote:
> Un problema que tengo, con mayusculas y minusculas no obtengo los
> mismos resultados...
>
> ¿existe alguna opción?
>
> Búscando algo de información solo encontrado
> esto:http://foros.cristalab.com/buscador-php-mysql-con-mayusculas-minuscul...
>
> Gracias por todo, un saludo.
>
> El día 30 de noviembre de 2011 11:55, Sergio Villalba
> <[email protected]> escribió:
>
>
>
>
>
>
>
> > Ok muchas gracias.
>
> > PD: para quien le interese, FullText por defecto no realizar búsquedas
> > por 3 caracteres....hay que añadir la siguiente línea en el fichero
> > my.cnf y volver a crear el indice FullText.
>
> > [mysqld]
> > ft_min_word_len = 3
>
> > El día 30 de noviembre de 2011 10:22, Fran Moreno
> > <[email protected]> escribió:
> >> Puedes realizar dos búsquedas, una con '%SAR%' y almacenarla en el
> >> array $importante[] y luego otra con '% SAR %' y almacenarla en el
> >> array $resto[].
>
> >> Despues haces una unión de los dos arrays con la instruccion:
> >> $union = array_unique(array_merge($importante[], $resto[]));
>
> >> En el array $union[] quedarían primero los resultados importantes y
> >> después el resto.
>
> >> El problema de esta solución es que después no se puede paginar
> >> (creo).
>
> >> On 29 nov, 17:31, Sergio Villalba <[email protected]> wrote:
> >>> Hola a tod@s,
>
> >>> desde ya Gracias.
>
> >>> Mi pregunta esta relacionada con SQL, lo que quiero es clasificar las
> >>> búsquedas que se realizan en un buscador, pongo un ejemplo:
>
> >>> En mi caso la palabra "SAR" tiene mayor importancia que "SARDINA",
> >>> aunque puede ser valida.....vaya ejemplo :D
>
> >>> Mi consulta SQL actual es:
>
> >>> SELECT * FROM tabla WHERE (contenido like '%SAR%' OR titulo like '%SAR%')
>
> >>> Quiero cambiarla por:
>
> >>> SELECT * FROM tabla WHERE ((contenido like '% SAR %') OR (contenido
> >>> like '%SAR%') OR (titulo like '% SAR %') OR (titulo like '%SAR%'))
>
> >>> Lo que quiero es añadirle una condicionante para clasificar lo
> >>> resultados que para mí son más importantes con la siguiente
> >>> condicionante:
>
> >>> - Si encuentra algo que sea "%espacio SAR espacio%" valor es 1.
> >>> - Si encuentra algo que sea "%SAR%" valor es 2.
>
> >>> Por último, mi consulta la ordenaría por este valor 1 y 2 llamador
> >>> norder y por titulo.
>
> >>> Que tipo de orden puedo utilizar en SQL para realizar lo que
> >>> necesito...mi bbdd es MySQL.
>
> >>> Gracias por todo. Un saludo.
>
> >> --
> >> Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de
> >> Grupos de Google.
> >> Para publicar una entrada en este grupo, envía un correo electrónico a
> >> [email protected].
> >> Para anular tu suscripción a este grupo, envía un correo electrónico a
> >> [email protected]
> >> Para tener acceso a más opciones, visita el grupo
> >> enhttp://groups.google.com/group/cakephp-es?hl=es.
--
Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de Grupos
de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a
[email protected].
Para anular tu suscripción a este grupo, envía un correo electrónico a
[email protected]
Para tener acceso a más opciones, visita el grupo en
http://groups.google.com/group/cakephp-es?hl=es.