尝试使用 gastby-plugin-lunr
插件在 Gatsby 中实现搜索功能。
我的gatsby-config.js
:
{
resolve: `gatsby-plugin-lunr`,
options: {
languages: [
{
name: 'en'
}
],
fields: [
{ name: 'title', store: true, attributes: { boost: 20 }}
],
resolvers: {
allGhostPost: {
title: node => node.title
}
}
}
}
但我的索引仍然是空的。已尝试将标题 Node 更改为 node.fields.title
- 仍然不起作用。
我的搜索组件:
const ContactPage: FunctionComponent = () => {
const [results, setResults] = useState([]);
const [query, setQuery] = useState('');
const search = (event) => {
const query = event.target.value;
if (!query || !(window as any).__LUNR__) {
setResults([]);
}
const lunrIndex = (window as any).__LUNR__['en'];
const res = lunrIndex.index.search(query);
setResults(res);
setQuery(query);
};
return (
<Layout header={<DefaultHeader/>}>
<input type="text" value={query} onChange={search} />
<ul>{results.map(page => <li>{page}</li>)}</ul>
</Layout>
)
};
有人有想法吗?
最佳答案
通过将解析器
更改为:
resolvers: {
GhostPost: {
title: node => node.title
}
}
关于node.js - Gatsby Lunr 插件与 Ghost 源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56206791/