全文检索:search
User 69e88e27
发布于:2025-07-01
使用search tag标签进行分词检索数据
1. 基本用法
{% search collection_name, keywords: '关键词', by_user: true %}
<!-- 这里自定义搜索结果的展示 -->
{% for page in search.pages %}
<li><a href="{{ page.url }}">{{ page.link_text }}</a></li>
{% endfor %}
{% endsearch %}
2. 参数说明
参数名 | 描述 | 类型 | 默认值 | 示例 |
collection_name | 要搜索的pages数据集合 | PagesDrop |
| |
keywords | 搜索关键词 | 字符串或变量 | ||
by_user | 标记是否为用户检索,若为 | Boolean | true |
3. 搜索结果可用属性
在 {% search ... %}
和 {% endsearch %}
包裹的内容中,可通过 search
对象获取以下参数:
search.pages
搜索结果页面集合,可用于遍历。search.keywords
本次搜索的关键词。search.extends
额外扩展信息(如有)。
4. 直达跳转(自动处理)
如果搜索结果为直达,会自动跳转到目标页面。
由站点页面管理,搜索记录/自定义搜索结果 中配置
5. 设置模板可用于分词检索的动态变量
在模板文件的 settings_schema 中添加 searchable: true
<!-- templates/page.liquid -->
{% schema %}
{
"name": "Help Center",
"settings": [
{
"id": "description_en",
"type": "textarea",
"label": "英文描述",
"searchable": true # 开启后,创建的页面中填写此值的,在前端可直接分词搜索
}
]
}
{% endschema %}
6. 示例
- 目标:在某栏目页面中实现筛选、搜索功能
- 可筛选页面动态字段(由模版settings中自行开启): tags (array[tag])、 category(string))
- 可搜索页面内容:页面标题、内容等, 由url中获取params 提供的关键词进行搜索
- 实现方案:通过query tag + search tag,共同处理
- 页面模版中:templates/articles_channel.liquid
<!-- 通过 query进行动态字段过滤数据 -->
{% query pages1 from site.pages %}
{
"where": {
"tags_array_cont_any": ["faq", "help"]
"category_eq": "会议"
}
}
{% endquery %}
<!-- 通过 search 对 pages1 结果进行全文搜索, 并渲染结果 -->
{% search pages1, keywords: params[:q] %}
<ul>
{% for page in search.pages %}
<li><a href="{{ page.url }}">{{ page.link_text }}</a></li>
{% endfor %}
</ul>
{% endsearch %}