115 lines
3.3 KiB
HTML
115 lines
3.3 KiB
HTML
{% extends "base.html" %}{% from "partials/paper_card.html" import render_card %}
|
|
{% block title %}{{ page_title }} — HF Daily Papers{%
|
|
endblock %} {% block content %}
|
|
<section class="search-page">
|
|
{# 搜索表单 #}
|
|
<form class="search-form" method="get" action="/search">
|
|
<input
|
|
type="text"
|
|
name="q"
|
|
value="{{ query }}"
|
|
placeholder="搜索标题、摘要、作者、标签..."
|
|
class="search-input"
|
|
autofocus
|
|
/>
|
|
{% if tag %}
|
|
<input type="hidden" name="tag" value="{{ tag }}" />
|
|
{% endif %} {# 模式切换 #} {% if chroma_enabled %}
|
|
<div class="search-mode-toggle">
|
|
<label
|
|
class="mode-option {% if mode == 'keyword' or not mode %}active{% endif %}"
|
|
>
|
|
<input
|
|
type="radio"
|
|
name="mode"
|
|
value="keyword"
|
|
{% if mode == "keyword" or not mode %}checked{% endif %}
|
|
/>
|
|
关键词
|
|
</label>
|
|
<label class="mode-option {% if mode == 'semantic' %}active{% endif %}">
|
|
<input
|
|
type="radio"
|
|
name="mode"
|
|
value="semantic"
|
|
{% if mode == "semantic" %}checked{% endif %}
|
|
/>
|
|
语义搜索
|
|
</label>
|
|
</div>
|
|
{% endif %}
|
|
|
|
<button type="submit" class="search-btn">搜索</button>
|
|
</form>
|
|
|
|
{# 标签筛选 #} {% if all_tags %}
|
|
<div class="tag-filter">
|
|
<span class="tag-filter-label">标签:</span>
|
|
<a
|
|
href="/search?q={{ query }}&mode={{ mode }}{% if tag %}&tag={{ tag }}{% endif %}"
|
|
class="tag-chip {% if not tag %}active{% endif %}"
|
|
>全部</a
|
|
>
|
|
{% for t in all_tags %}
|
|
<a
|
|
href="/search?q={{ query }}&tag={{ t }}&mode={{ mode }}"
|
|
class="tag-chip {% if t == tag %}active{% endif %}"
|
|
>{{ t }}</a
|
|
>
|
|
{% endfor %}
|
|
</div>
|
|
{% endif %} {% if query or tag %} {# 搜索结果元信息 #}
|
|
<div class="search-meta">
|
|
<span
|
|
>找到 {{ total }} 条结果{% if mode == 'semantic' %}(语义模式){% endif
|
|
%}</span
|
|
>
|
|
<div class="sort-toggle">
|
|
<a
|
|
href="/search?q={{ query }}&tag={{ tag }}&mode={{ mode }}&sort=relevance"
|
|
class="{% if sort == 'relevance' %}active{% endif %}"
|
|
>相关性</a
|
|
>
|
|
<span class="sort-divider">|</span>
|
|
<a
|
|
href="/search?q={{ query }}&tag={{ tag }}&mode={{ mode }}&sort=date"
|
|
class="{% if sort == 'date' %}active{% endif %}"
|
|
>日期</a
|
|
>
|
|
</div>
|
|
</div>
|
|
|
|
{% if results %}
|
|
<div class="paper-list">
|
|
{% for paper in results %}
|
|
{{ render_card(paper, snippets=snippets, distances=distances, variant="search") }}
|
|
{% endfor %}
|
|
</div>
|
|
|
|
{# 分页 #} {% if total_pages > 1 %}
|
|
<nav class="pagination">
|
|
{% if page > 1 %}
|
|
<a
|
|
href="/search?q={{ query }}&tag={{ tag }}&sort={{ sort }}&mode={{ mode }}&page={{ page - 1 }}"
|
|
class="page-btn"
|
|
>← 上一页</a
|
|
>
|
|
{% endif %}
|
|
<span class="page-info">{{ page }} / {{ total_pages }}</span>
|
|
{% if page < total_pages %}
|
|
<a
|
|
href="/search?q={{ query }}&tag={{ tag }}&sort={{ sort }}&mode={{ mode }}&page={{ page + 1 }}"
|
|
class="page-btn"
|
|
>下一页 →</a
|
|
>
|
|
{% endif %}
|
|
</nav>
|
|
{% endif %} {% else %}
|
|
<div class="empty-state">
|
|
<p>没有找到匹配的论文</p>
|
|
<p class="hint">试试其他关键词或标签</p>
|
|
</div>
|
|
{% endif %} {% endif %}
|
|
</section>
|
|
{% endblock %}
|