为何Hygraph/GraphCMS富文本内容无法搜索?如何实现全字段搜索?
解决Hygraph搜索仅匹配标题的问题
你遇到的问题核心是当前搜索逻辑仅覆盖了标题字段,可通过以下两种方式实现全字段搜索:
方法1:开启Hygraph后台的字段搜索权限
登录Hygraph后台,找到你的Post内容模型:
- 逐一打开需要纳入搜索的字段(比如
content、author.name等)的设置面板 - 开启字段的「可搜索」选项(通常在高级设置分类下)
- 保存模型配置后,原代码中的
_search查询就会自动覆盖所有开启了搜索权限的字段
方法2:显式组合多字段模糊匹配
如果不想依赖后台配置,或者需要更精准的搜索控制,可以用OR操作符组合多个字段的contains查询,直接指定要搜索的目标字段:
修改后的代码如下(同时修正了原代码里的titile拼写错误):
export async function getServerSideProps(context) { const { query } = context; const searchTerm = query.q; const { posts } = await hygraph.request( ` query BlogPostPage($search: String! ){ posts(where:{ OR: [ {title_contains: $search}, {content_html_contains: $search}, {author_name_contains: $search} ] }){ createdAt id slug title coverPhoto { url } content { html } author { name avtar { url } } } } `, { search: searchTerm } ); return { props: { posts, }, }; }
你可以根据实际需求,继续添加更多字段的匹配条件(比如slug_contains),只要遵循字段名_contains的格式即可。
内容的提问来源于stack exchange,提问作者Sujjeee
相关产品推荐
相关产品推荐

