lunr.jsでは、メソッドを使用して一意の参照を追加できますが、.ref()
その特定のレコードに関する追加のデータ/情報を追加する方法が見つかりません。それは不可能ですか、それとも本当に明白な何かが欠けていますか。
オブジェクトを ref に割り当てようとしましたが、文字列として保存されます。
EDIT
今のところ、すべてのコンテンツをJSON文字列として保存してい.ref()
ます。これは機能しますが、実際には使いにくいです。
lunr.jsでは、メソッドを使用して一意の参照を追加できますが、.ref()
その特定のレコードに関する追加のデータ/情報を追加する方法が見つかりません。それは不可能ですか、それとも本当に明白な何かが欠けていますか。
オブジェクトを ref に割り当てようとしましたが、文字列として保存されます。
EDIT
今のところ、すべてのコンテンツをJSON文字列として保存してい.ref()
ます。これは機能しますが、実際には使いにくいです。
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]
})