在 JavaScript 中通过 JSON 对象进行类似 Lucene 的搜索

2023-11-26

我有一个相当大的 JSON 对象数组(它是一个音乐库,具有艺术家、专辑等属性,使用 loadonce=true 提供 jqgrid),并且我想通过整个集合实现类似 lucene(类似 google)的查询 - 但在本地,即在浏览器中,不与网络服务器通信。有没有任何 JavaScript 框架可以帮助我?


  1. 浏览您的记录,通过组合所有搜索来创建一次性索引 称为索引的单个字符串字段中的可用字段。

  2. 将这些索引记录存储在数组中。

  3. 在索引上对数组进行分区..就像一个数组中的所有 a 等等。

  4. 使用 JavaScript 函数指数()根据索引来匹配用户输入的查询并从分区数组中查找记录。

这是简单的部分,但是,它将以非常有效的方式支持所有简单的查询,因为不必为每个查询重新创建索引,并且 indexOf 操作非常有效。我已经用它搜索了多达 2000 条记录。我使用了预先排序的数组。事实上,Gmail 和雅虎邮件就是这样工作的。它们将您的联系人存储在浏览器上预先排序的数组中,并带有索引,使您可以在键入时查看联系人姓名。

这也为您提供了一个基础。现在您可以在其上编写高级查询解析逻辑。例如,要支持一些简单的条件关键字(例如 - AND OR NOT),将需要大约 20-30 行自定义 JavaScript 代码。或者您可以找到一个 JS 库,它将像 Lucene 那样为您进行解析。

对于上述逻辑的参考实现,请看一下如何ZmContactList.js对联系人进行排序和搜索以进行自动完成。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 JavaScript 中通过 JSON 对象进行类似 Lucene 的搜索 的相关文章

随机推荐