【问题标题】:Build an index in a Node app using Js Search使用 Js Search 在 Node 应用程序中构建索引
【发布时间】:2017-09-28 02:10:22
【问题描述】:

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

READMEbenchmark 代码中我不清楚如何执行此操作。

我试过了:

  // 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);

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

【问题讨论】:

  • 你是在服务器端还是在客户端运行这段代码?您是否有任何类型的 REST API、WebSocket 或其他通信介质设置,以便您可以在客户端和服务器之间发送消息?
  • 嗨 Mike — 我在服务器端运行它。我希望能够在服务器上创建一个索引,然后在客户端缓存并使用它。 (请参阅下面我对布赖恩回答的评论。)

标签: javascript lunrjs js-search


【解决方案1】:

在客户端 JavaScript 应用程序中使用此索引

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

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

所以我建议几种可能性:

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

【讨论】:

  • 谢谢布赖恩!我的目标是尝试像我在这里所做的那样启用离线搜索:simpl.info/search/lunrsimpl.info/search/pouchdb。我将尝试按照您的建议在客户端的内存中创建索引(同时缓存数据)。
猜你喜欢
  • 2019-01-16
  • 2017-06-15
  • 2016-10-18
  • 2017-06-12
  • 2019-05-24
  • 2022-08-16
  • 2015-02-15
  • 2019-04-28
  • 2017-07-04
相关资源
最近更新 更多