我正在尝试创建一个lunr索引,并能够在分配后向其中添加文档。这是我要做的事情的稍微简化的版本:

var documents = [{
  'id': '1',
  'content': 'hello'
}, {
  'id': '2',
  'content': 'world'
}, {
  'id': '3',
  'content': '!'
}];

var idx = lunr(function() {
  this.ref('id');
  this.field('content');
});

for (var i = 0; i < documents.length; ++i) {
  idx.add(documents[i]);
}


这给了我以下错误:TypeError:idx.add不是一个函数。
我看过多个tutorials,这就是您应该能够做到的方式。

尽管仅当我在分配idx时添加文档时,它才对我有用;

var documents = [{
  'id': '1',
  'content': 'hello'
}, {
  'id': '2',
  'content': 'world'
}, {
  'id': '3',
  'content': '!'
}];

var idx = lunr(function() {
  this.ref('id');
  this.field('content');

  for (var i = 0; i < documents.length; ++i) {
    this.add(documents[i]);
  }
});


我仍然是javascript noob,因此可能不一定与lunr相关。

最佳答案

您链接到的教程适用于旧版本的Lunr。最新版本要求您将所有文档添加到传递给lunr函数的函数中的索引中。换句话说,您的第二个示例对于最新版本的Lunr是正确的。

升级到最新版本时有一个guide,希望可以涵盖该教程(和其他教程)中的旧版本与最新版本之间的区别。

10-02 20:08