lunr.js 添加关于索引记录的数据
lunr.js Add data about an index record
在 lunr.js 中,您可以使用 .ref()
方法添加唯一引用,但我找不到任何方法来添加关于该特定记录的额外 data/info。这是不可能的还是我错过了一些非常明显的东西。
我什至尝试将对象分配给 ref,但它会将其保存为字符串。
编辑
现在我将所有内容保存为 .ref()
中的 JSON 字符串,它可以工作,但使用起来真的很难看。
lunr 根本不存储您传递给索引的文档,它索引的方式意味着原始文档对 lunr 根本不可用,因此无法传递和存储与索引对象。
更好的解决办法是把你的记录保存在lunr之外,当你得到搜索结果时,使用你给lunr的引用拉出记录。这样你就可以存储任何你想要的任意元数据。
一个简单的实现可能看起来像这样,它过于简单但你明白了......
var documents = [{
id: 1,
title: "Third rock from the sun",
album: "Are you expirienced",
rating: 8
},{
id: 2,
title: "If 6 Was 9",
album: "Axis bold as love",
rating: 7
},{
id: 3,
title: "1983...(A Merman I Should Turn to Be)",
album: "Electric Ladyland",
rating: 10
}]
var db = documents.reduce(function (acc, document) {
acc[document.id] = document
return acc
}, {})
var idx = lunr(function () {
this.ref('id')
this.field('title', { boost: 10 })
this.field('album')
})
documents.forEach(function (document) {
idx.add(document)
})
var results = idx.search("love").forEach(function (result) {
return db[result.ref]
})
在 lunr.js 中,您可以使用 .ref()
方法添加唯一引用,但我找不到任何方法来添加关于该特定记录的额外 data/info。这是不可能的还是我错过了一些非常明显的东西。
我什至尝试将对象分配给 ref,但它会将其保存为字符串。
编辑
现在我将所有内容保存为 .ref()
中的 JSON 字符串,它可以工作,但使用起来真的很难看。
lunr 根本不存储您传递给索引的文档,它索引的方式意味着原始文档对 lunr 根本不可用,因此无法传递和存储与索引对象。
更好的解决办法是把你的记录保存在lunr之外,当你得到搜索结果时,使用你给lunr的引用拉出记录。这样你就可以存储任何你想要的任意元数据。
一个简单的实现可能看起来像这样,它过于简单但你明白了......
var documents = [{
id: 1,
title: "Third rock from the sun",
album: "Are you expirienced",
rating: 8
},{
id: 2,
title: "If 6 Was 9",
album: "Axis bold as love",
rating: 7
},{
id: 3,
title: "1983...(A Merman I Should Turn to Be)",
album: "Electric Ladyland",
rating: 10
}]
var db = documents.reduce(function (acc, document) {
acc[document.id] = document
return acc
}, {})
var idx = lunr(function () {
this.ref('id')
this.field('title', { boost: 10 })
this.field('album')
})
documents.forEach(function (document) {
idx.add(document)
})
var results = idx.search("love").forEach(function (result) {
return db[result.ref]
})