使用 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
哪个(我相信)确实支持序列化和恢复索引。
我想在 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
哪个(我相信)确实支持序列化和恢复索引。