Estoy diseñando una aplicación de escritorio (cosas de contabilidad aburridas) y tengo una función de "producto de búsqueda".
Quiero tener un cuadro de búsqueda 'inteligente' agradable pero simple. Actualmente, el cuadro de búsqueda funciona dividiendo todas las palabras especificadas y buscando todos los registros que coinciden parcialmente con cualquiera de ellas.
Ahora me enfrento al siguiente dilema: Realmente quiero proporcionar una forma de especificar si el usuario desea hacer coincidir any o all las palabras especificadas. ¿Cuál sería un buen enfoque?
Otro problema es que tal vez un usuario quiere realizar una coincidencia exacta. Nuevamente, quiero que la aplicación sea fácil de usar.
Por el momento solo lancé tres botones de radio al formulario, pero me siento sucio por dentro ... ¿alguna opinión?
Google lo resolvió hace mucho tiempo: no sirve de nada reinventar la rueda. ;)
Le sugiero que elimine la necesidad de elegir y realice tres búsquedas al mismo tiempo: "frase exacta" , "coincide con todas las palabras" , AND "coincide con cualquiera" . Luego, una (SQL "union") esos resultados en ese orden y preséntelos al usuario.
inconvenientes:
Positivos:
Asegúrese de eliminar las palabras ruidosas de la frase de búsqueda y normalizar casos/conjugaciones, etc .; ayudará a encontrar los resultados que necesitan sus usuarios, incluso si escriben las palabras de búsqueda en el caso incorrecto/tiempo/con el artículo incorrecto.
También asegúrese de que la búsqueda solo funcione con el teclado (es decir, sin obligar al usuario a usar el mouse. <search phrase> <Enter>
debería ser suficiente para obtener resultados).
Mi opinión personal es que debe proporcionar una forma para que el usuario refine la búsqueda, porque:
La forma en que sugeriría hacerlo es algo similar a lo que sugirió Chris.
Tomado de DeepDyve :
Una vez que presiona "refinar", puede abrir una lista desplegable de inmediato o incluso usar un pequeño cuadro de diálogo si en el futuro tiene la intención de agregar más opciones de búsqueda.
Si el espacio es la principal preocupación, ¿ha pensado usar un menú desplegable? Si bien tal vez no sea una solución brillante (ya que requiere más clics), ocuparía menos espacio que un conjunto de botones de radio.
La opción actual aparecería con el expansor para permitir las otras opciones.
+-----------------+---+ +---------------------+ +----+
Search | exact phrase | V | | | | Go |
+-----------------+---+ +---------------------+ +----+
| all words |
| any words |
| exact phrase |
+---------------------+
(disculpa el mal arte ascii)
Un refinamiento podría ser realizar el menú desplegable cuando el mouse se desplaza sobre el expansor en lugar de que el usuario tenga que hacer clic, pero nuevamente no es una solución ideal.
Eliminaría las opciones de búsqueda: no creo que sea así como piensan los usuarios, pero, como dice el mantra de la interfaz de usuario, pruébelo con usuarios reales y vea lo que piensan.
Por lo general, los motores de búsqueda priorizan así:
Definitivamente de acuerdo con Erion, no es necesario que el usuario elija ese tipo de cosas, haga que su motor de búsqueda (sea lo que sea) lo haga por usted.
No importa qué tecnología esté utilizando su back-end para la búsqueda, hay formas de priorizar los resultados de acuerdo con los criterios que desee (es decir, al igual que Google). Algunos pueden ser más difíciles de configurar que otros para este tipo de cosas, pero incluso una indexación de texto completo básica de SQL Server puede proporcionar este nivel de organización de resultados de búsqueda.
Simplemente tome la decisión de obtener la mejor experiencia de usuario y haga que sus ingenieros (o desarrolladores, si es necesario) lo hagan funcionar. Para eso están allí. Como también soy ingeniero, puedo decir que :)
Si tiene curiosidad, los motores de búsqueda de texto completo funcionan más comúnmente mediante el uso de la puntuación TD-IDF. Esto significa Término Frecuencia-Frecuencia de documento inversa . Lo esencial es que un documento es más relevante si el término de búsqueda aparece en él con mucha frecuencia, esto se descuenta por la cantidad de documentos en los que aparece la palabra en general.