Tengo un cliente que pregunta si su búsqueda, que busca nombres de compañías que podrían buscarse en varios formatos dependiendo de la entrada del usuario, como la compañía almacenada en la base de datos es AJR Kelly Ltd, por ejemplo, si es un usuario busca "AJR Kelly" se encuentra, usando;MySQL LIKE% string% no es lo suficientemente indulgente. ¿Algo más que pueda usar?
<cfif pctermsCount gt 0>
AND (LOWER(p.name) LIKE '%#pcTerms#%')
</cfif>
Si en su búsqueda de "Kelly", la compañía se encuentra, pero si que la búsqueda de una versión rota de la cadena como "Un J Kelly" o "AJ Kelly" no ha encontrado.
¿Hay algo que pueda hacer para hacerlo un poco más indulgente?
Gracias.
Estamos usando MyISAM. Consideré FullText así que probé para asegurarme de poder habilitar eso en la mesa, puede hacerlo.Todavía no lo he probado, porque significaría un poco de toquetear la interfaz de usuario, pero le mostraré algunos ejemplos al cliente en PHPMyAdmin, pero tengo la sensación FullText podría ser un poco tolerante por su gusto. Gracias por tu respuesta. El texto completo parece ser la mejor solución si no puede vivir con el problema. –
No debería necesitar ningún toque en la interfaz de usuario. Puede tomar la misma cadena de búsqueda y cambiar el DONDE a algo como 'donde MATCH (indexcol) contra ('AJ Kelly' en modo booleano) ORDER BY MATCH (indexcol) contra ('AJ Kelly' en modo booleano) DESC' –
Yeah , lo siento, no estaba claro. Por "interfaz de usuario" me refiero al código de la página web, hay una gran cantidad de consultas basadas en muchas cosas provenientes de muchos lugares, es bastante complejo, por lo que es más fácil probar si le gustan los resultados del texto completo mostrándolo en PHPMyAdmin que hacer muchos cambios en el código de back-end para probarlo. Lo siento, pero gracias por publicar ese fragmento de consulta, me salvó más tiempo. :RE –