feat: add compare, trends routes, embedder service, and phase5 tests
This commit is contained in:
@@ -11,6 +11,21 @@
|
||||
{% 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>
|
||||
|
||||
@@ -18,10 +33,10 @@
|
||||
{% if all_tags %}
|
||||
<div class="tag-filter">
|
||||
<span class="tag-filter-label">标签:</span>
|
||||
<a href="/search{% if query %}?q={{ query }}{% endif %}"
|
||||
<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 }}"
|
||||
<a href="/search?q={{ query }}&tag={{ t }}&mode={{ mode }}"
|
||||
class="tag-chip {% if t == tag %}active{% endif %}">{{ t }}</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
@@ -30,12 +45,12 @@
|
||||
{% if query or tag %}
|
||||
{# 搜索结果元信息 #}
|
||||
<div class="search-meta">
|
||||
<span>找到 {{ total }} 条结果</span>
|
||||
<span>找到 {{ total }} 条结果{% if mode == 'semantic' %}(语义模式){% endif %}</span>
|
||||
<div class="sort-toggle">
|
||||
<a href="/search?q={{ query }}&tag={{ tag }}&sort=relevance"
|
||||
<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 }}&sort=date"
|
||||
<a href="/search?q={{ query }}&tag={{ tag }}&mode={{ mode }}&sort=date"
|
||||
class="{% if sort == 'date' %}active{% endif %}">日期</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -58,6 +73,11 @@
|
||||
</a>
|
||||
</h2>
|
||||
<span class="paper-upvotes">👍 {{ paper.upvotes }}</span>
|
||||
{% if distances and paper.arxiv_id in distances %}
|
||||
<span class="similarity-score" title="语义相似度距离">
|
||||
🎯 {{ "%.3f"|format(distances[paper.arxiv_id]) }}
|
||||
</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% if snippet and snippet.abstract %}
|
||||
@@ -103,11 +123,11 @@
|
||||
{% if total_pages > 1 %}
|
||||
<nav class="pagination">
|
||||
{% if page > 1 %}
|
||||
<a href="/search?q={{ query }}&tag={{ tag }}&sort={{ sort }}&page={{ page - 1 }}" class="page-btn">← 上一页</a>
|
||||
<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 }}&page={{ page + 1 }}" class="page-btn">下一页 →</a>
|
||||
<a href="/search?q={{ query }}&tag={{ tag }}&sort={{ sort }}&mode={{ mode }}&page={{ page + 1 }}" class="page-btn">下一页 →</a>
|
||||
{% endif %}
|
||||
</nav>
|
||||
{% endif %}
|
||||
|
||||
Reference in New Issue
Block a user