使用 Js Search 在 Node 应用程序中构建索引

Build an index in a Node app using Js Search

我想在 Node 应用程序中创建一个 Js Search 索引,然后在客户端 JavaScript 应用程序中使用该索引。

我从 README or the benchmark 代码中不清楚如何执行此操作。

我试过这个:

  // docs is an array of objects, each with a name, title and description
  var search = new jsSearch.Search('name');
  search.addIndex('title');
  search.addIndex('description');
  search.addDocuments(docs);

...还有这个:

  var search = new jsSearch.Search('name');
  search.searchIndex = new jsSearch.TfIdfSearchIndex('name');
  search.addIndex('title');
  search.addIndex('description');
  search.addDocuments(docs);

...但是此时我该如何访问索引?

use this index in a client-side JavaScript app

无法将内存中的索引从 Node 传递到浏览器,以便以您通常的方式进行访问(如果您只是在浏览器中构建索引)。 js-search [当前] 不支持序列化。 (早期测试表明,与从头开始重新创建相比,从序列化格式恢复的速度并没有明显加快。)

可以 通过 API 从 Node 公开搜索,但我认为这不是您想要的或正在寻找的。

所以我建议两种可能性:

  • 首先在客户端建立索引。做起来非常快。 (如果你不能这样做,因为你正在索引的数据太大,那么考虑像前面提到的那样通过 API 公开它。)另外,如果你不需要所有的可配置性js-search(根据您的示例,您似乎没有这样做)然后考虑使用其更快的兄弟 js-worker-search.
  • 或者您可以查看 lunr.js 哪个(我相信)确实支持序列化和恢复索引。