首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果没有完整的重新索引,完全验证可以更新其全文索引吗?

如果没有完整的重新索引,完全验证可以更新其全文索引吗?
EN

Stack Overflow用户
提问于 2014-03-20 09:06:36
回答 2查看 877关注 0票数 1

我正在评估富洛夫 javascript全文搜索引擎,但我不知道它是否能够处理索引更新。从我对api的阅读中,没有提到更新或删除索引中的内容。

例如,lunr.js可以使更新到索引而不需要完全重新索引。

我希望它能够进行索引更新,因为在我的iPad上,创建索引需要10分钟,如果每次都必须重建索引,这是非常困难的。相对于40秒来创建lunrjs索引。然而,lunr的问题是,完整的索引需要在内存中,而在完全证明中,它将索引放在本地WebSQL db中。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-27 00:29:45

考虑到在这个github问题上缺少注释,所以它似乎无法从索引中更新/删除条目。

票数 0
EN

Stack Overflow用户

发布于 2014-03-21 10:51:48

我不能说完全可靠,但是没有什么可以阻止您自己将lunr索引快照到客户端存储中。

鉴于以下指数:

代码语言:javascript
复制
var idx = lunr(function () {
  this.ref('id')
  this.field('title')
})

可以将其转储为JSON,如下所示:

代码语言:javascript
复制
var dump = JSON.stringify(idx)

现在您可以在任何您喜欢的地方存储这个转储,我对WebSQL并不太熟悉,但是将它存储在localStorage中可能如下所示:

代码语言:javascript
复制
localStorage.setItem('lunr_dump', dump)

若要重新加载索引,请执行以下操作:

代码语言:javascript
复制
var idx = lunr.Index.load(dump)

将转储索引加载回lunr应该比每次重建它快几个数量级。

正如您所提到的,lunr不需要每次都重新构建整个索引,因此假设您更新了一个文档,并且希望保持转储版本的最新更新:

代码语言:javascript
复制
idx.on('update', function (doc, index) {
  localStorage.setItem('lunr_dump', JSON.stringify(index))
})

idx.update(someDocument)

这将再次转储整个索引,包括更新时所做的任何更改。对转储进行基准测试是值得的,因为可能会有一些开销,特别是较大的索引。

如果您的数据是相对静态的,您实际上可以在服务器上预构建一个索引,并将其发送到客户机,保存客户端在每次加载页面时构建索引的工作,请查看https://github.com/olivernn/lunr-index-builder

不过,您可以更进一步,因为转储索引只是JSON,没有什么可以阻止您单独索引文档,然后将转储的索引合并到一起,这里有一个问题,其中有一些讨论,还有一个链接到一个博客文章,如果您感兴趣的话,可以实现它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22528104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档