Есть ли библиотека JavaScript, которая может определить, соответствует ли строка поисковому запросу? Он должен быть эффективным и обеспечивать расширенные функции запроса, такие как Google или LexisNexis (такие вещи, как и/или операторы, синонимы и круглые скобки). Любые расширенные функции поиска были бы замечательными; он не должен быть точным совпадением с какой-либо конкретной поисковой системой.
Мотивация. У меня есть страница HTML с полем поиска, за которым следует куча абзацев (которые имеют уникальные идентификаторы и генерируются из массива JavaScript). Когда пользователь вводит поисковый запрос в поле и нажимает клавишу ввода, все абзацы должны быть скрыты (т.е. Их display
установлен на none
), если они не соответствуют запросу.
Моя текущая стратегия (с использованием jQuery):
- Разделите строку запроса на массив ключевых слов, разделив ее на пробелы.
- Скрыть все абзацы с помощью
$('p').hide()
. - Для каждого ключевого слова покажите абзац, содержащий его с
$('p:contains("'+keyword+'")').show()
.
Это чрезвычайно ограниченная функция поиска, чувствительная к регистру, рассматривает все ключевые слова как необязательные и не предоставляет такие операторы, как and
, or
или круглые скобки. Он также неэффективен, потому что он проходит каждую строку один раз для каждого ключевого слова, даже если он уже сопоставлен.