¿Hay una biblioteca de JavaScript que pueda determinar si una cadena coincide con una consulta de búsqueda? Debe ser eficiente y proporcionar una funcionalidad de consulta avanzada como la de Google o LexisNexis (cosas como y/o operadores, sinónimos y paréntesis). Cualquier tipo de funciones de búsqueda avanzada sería genial; no tiene que ser una coincidencia exacta con ningún motor de búsqueda en particular.Biblioteca de JavaScript para buscar en el estilo del motor de búsqueda?
Motivación: Tengo una página HTML con un cuadro de búsqueda seguido de un grupo de párrafos (que tienen identificadores únicos y se generan a partir de una matriz de JavaScript). Cuando el usuario escribe una consulta de búsqueda en el cuadro y presiona intro, todos los párrafos deben estar ocultos (es decir, su display
establecido en none
) si no coinciden con la consulta.
Mi estrategia actual (usando jQuery):
- independiente la cadena de consulta en una serie de palabras clave mediante su división sobre los espacios en blanco.
- Ocultar todos los párrafos con
$('p').hide()
. - Para cada palabra clave, muestre un párrafo que lo contenga con
$('p:contains("'+keyword+'")').show()
.
que es una función de búsqueda muy limitada que es sensible a mayúsculas, trata a todas las palabras clave como opcional, y no proporciona los operadores como and
, or
o paréntesis. También es ineficiente porque atraviesa cada cadena una vez para cada palabra clave, incluso si ya se ha hecho coincidir.
para hacer mayúsculas y minúsculas, puede convertir la palabra clave en minúsculas y comprobar si coincide con i, e. keyword.toLowerCase() – Shreedhar