Estoy creando una búsqueda para un sitio que utiliza una búsqueda de texto completo. La búsqueda en sí funciona muy bien, ese no es mi problema. Enlazo las palabras clave proporcionadas por el usuario (MATCH ... EN CONTRA ...) con AND para que las palabras múltiples reduzcan aún más los resultados. Ahora, sé que ciertas palabras intermedias no están indexadas, y eso está bien conmigo. Realmente no quiero usarlas como criterios de selección. Pero, si se proporciona una palabra de advertencia en el conjunto de palabras clave (por el usuario), mata todos los resultados (como se esperaba), incluso si la palabra realmente está en un cierto bloque de texto.ignorando las palabras vacías de texto completo de mysql en la consulta
Mi pregunta: ¿hay alguna manera de comprobar si una determinada palabra es una palabra de tope en el momento de la consulta? Mi solución preferida sería simplemente excluir la palabra relevante de los criterios de búsqueda (no me importa si un usuario puede restringir los resultados con la palabra "ninguno", simplemente no quiero que MySQL devuelva un conjunto de resultados vacío porque el usuario siempre y cuando no exista en los resultados). O, ¿voy a tener que vaciar la lista de palabras prohibidas? Muchas gracias por la ayuda.
editar ---- Lo siento, pero realmente no hay fragmentos de código para proporcionar para este. El código funciona bien, en realidad exactamente como se esperaba. Es más un problema lógico con el que estoy tratando. Sino como un ejemplo, en el modo de explicación:
digamos que hay tres registros, que incluyen las palabras (pero no se limitan a)
1: manzana, naranja, mango, plátano 2: Uva , naranja, piña, mango 3: patata, mango, melón, keira knightly
Si la palabra de búsqueda introducida por el usuario es mango, todos los resultados se devuelven correctamente. Si las palabras son naranja Y mango, los resultados 1 y 2 se devuelven (correctamente). Ahora, digamos que banana es una palabra final (no lo es ... pero supongamos que sí), si la búsqueda es naranja, mango y plátano, no se devuelven resultados (porque banana no está en el índice de texto completo).
Lo que estoy buscando es si alguien más ha encontrado este problema, y tiene una forma de evitarlo. Una especie de:
if 'banana' NOT STOP WORD match 'banana' against `words`. (OBVIOUSLY not real code).
O ... ¿Soy sólo va a tener que soltar la lista de palabras de parada ...
¿qué intentó? ¿Puedes darnos un ejemplo? – jcho360
Parece que ninguna de las respuestas realmente obtuvo lo que estaba buscando. Siempre puede escribir el código de la aplicación para filtrar manualmente las palabras vacías (así como las palabras demasiado cortas) de su consulta. Eso es probablemente lo que haremos. –
2017 y el mismo problema aquí .. Parece que la búsqueda de texto completo de mysql es realmente pobre y carece de características básicas. – jgr