使用

搜索

通过一些简单的配置和可组合函数,您可以在 Nuxt 内容站点中添加搜索功能。

使用

首先,您需要在 nuxt.config.ts 中启用搜索功能。

nuxt.config.ts
export default defineNuxtConfig({
  content: {
    experimental: {
      search: true
    }
  }
})
您可以对任何 Nuxt 内容源 使用搜索功能。您还可以启用或禁用 文档驱动功能

您可以使用 searchContent 可组合函数在 content 目录中搜索。

app.vue
<script lang="ts" setup>
const search  = ref('')

const results = await searchContent(search)
</script>

<template>
  <main>
    <input v-model="search">

    <pre>{{ results }} </pre>
  </main>
</template>

默认情况下,searchContent 可组合函数将使用索引搜索。这意味着搜索速度更快,API 响应更小且经过优化。响应只能由 miniSearch 使用

在内部,searchContent 可组合函数和 /api/indexed-search.ts 端点都使用 miniSearch

如果需要,您可以禁用索引搜索并使用简单搜索。

nuxt.config.ts
export default defineNuxtConfig({
  content: {
    experimental: {
      search: {
        indexed: false
      }
    }
  }
})

请记住,简单搜索速度较慢,API 响应较大。您仍然可以使用与搜索类型无关的 searchContent 可组合函数。

使用简单搜索(即非索引搜索),您可以使用您选择的工具在 API 响应中搜索。例如,您可以使用 fuse.js@vueuse/integrations 集成。

composables/custom-search-content.ts
export default async function customSearchContent(search: Ref<string>) {
  const runtimeConfig = useRuntimeConfig()
  const { integrity, api } = runtimeConfig.public.content

  const { data } = await useFetch(`${api.baseURL}/search${integrity ? '.' + integrity : ''}.json`)

  const { results } = useFuse(search, data)

  return results
}

配置

请阅读 配置部分 以详细了解搜索选项。