如何在Gatsby中将Elasticlunr与页面组件一起使用?

时间:2019-11-12 11:30:53

标签: reactjs gatsby

我有一个小的Gatsby应用程序,并且想使用gatsby-plugin-elasticlunr-search为我提供一些基本的搜索功能。不幸的是,所有示例都使用MarkdownRemark将markdown文件中的内容放入Elasticlunr索引中,但是由于种种原因,我使用了每一面的组件。

有没有一种方法可以对graphql渲染的页面进行索引? 如果没有,我可以使用gatsby-source-filesystem来索引页面的源代码(文件中主要是HTML,但是到目前为止我只能检索元数据)?

我在/ src / pages目录中的页面如下:

export const IndexPage = (props) => (
  <Layout>
    <h1>This is my first page</h1>
  </Layout>
)

在我的gatsby-config.js文件中,我试图像这样对源代码建立索引(不起作用-无效的配置文件):

    {
      resolve: `gatsby-source-filesystem`,
      options: {
        name: `pages`,
        path: `${__dirname}/src/pages`,
      }
    },{
      resolve: `@gatsby-contrib/gatsby-plugin-elasticlunr-search`,
      options: {
        fields: [`name`, `body`],

        resolvers: {

          File: {
            name: node => node.name,
            body: node => node.internal.content // returns always null..
          }
        },
        filter: (node, getNode) => node.sourceInstanceName === `pages`
      },

0 个答案:

没有答案