是否有可以确定字符串是否与搜索查询匹配的 JavaScript 库?它应该是高效的,并提供类似于 Google 或 LexisNexis 的高级查询功能(诸如和/或运算符、同义词和括号之类的东西)。任何一种高级搜索功能都会很棒;它不必与任何特定的搜索引擎完全匹配。
动机:我有一个带有搜索框的 HTML 页面,后跟一堆段落(它们具有唯一的 id,并且是从 JavaScript 数组生成的)。当用户在框中键入搜索查询并按 Enter 键时,如果所有段落与查询不匹配,则应隐藏所有段落(即它们的display
设置为)。none
我目前的策略(使用 jQuery):
- 通过将查询字符串拆分为空格,将查询字符串分隔为关键字数组。
- 用 隐藏所有段落
$('p').hide()
。 - 对于每个关键字,用 显示包含它的段落
$('p:contains("'+keyword+'")').show()
。
这是一个非常有限的搜索功能,它区分大小写,将所有关键字视为可选关键字,并且不提供诸如 、 或括号之类的运算and
符or
。这也是低效的,因为它为每个关键字遍历每个字符串一次,即使它已经匹配。