搜索聚合引擎:SearXNG、Degoog

DeepResearch(上):方法论、OpenAI Deep Research、SurfSence、MindSearch、morphik、Firesearch里简单介绍过SearXNG。本文尝试深度实战与问题记录。

SearXNG

传统搜索引擎(如百度、Google)往往会追踪用户的搜索历史,收集个人数据,甚至分析用户行为。

SearXNG,作为开源(GitHub,29.3K Star,2.8K Fork)的元搜索引擎,通过聚合来自多个搜索引擎的结果,保持对用户的匿名保护,确保不会进行任何追踪或数据收集。官方文档

功能特点

  1. 无追踪搜索:完全避免用户数据的追踪和记录,保障用户的隐私。所有搜索请求都匿名处理,不会收集个人信息;
  2. 支持多种搜索引擎:聚合来自超多个搜索引擎(如Bing、DuckDuckGo等)的结果,为用户提供更广泛的搜索选择和更精准的结果;
  3. 开源自托管跨和平台支持:作为开源项目,允许用户根据需求自定义功能并自行托管。通过Docker部署,用户可以轻松在自己的服务器上运行,完全掌控数据和配置;
  4. 无广告干扰:提供干净、无广告的搜索体验,避免了传统搜索引擎中常见的广告干扰,让用户专注于搜索内容;
  5. 高度可定制:用户可以根据个人需求定制搜索引擎的配置,选择希望聚合的搜索源、设置搜索偏好等;
  6. 支持多语言:提供多语言支持,用户可以根据自己的语言偏好设置搜索界面,提供更便捷的使用体验;
  7. 过滤功能强大:提供灵活的过滤功能,用户可自定义过滤规则,屏蔽特定类型的结果,提供更加精准的搜索体验。

实战

支持多种安装部署方式:

  • Docker:searxng/searxng:latest
  • Docker Compose

本文基于macOS环境(当然也支持Windows和Linux),以Docker Compose方式部署。


此处踩过耗时近2小时血泪坑,看到此文的朋友们一定要引以为戒。


鬼使神差,没有想到直接打开GitHub项目主页,而是在2026年,依旧使用Bing/Google并搜索SearXNG docker compose关键词,谁曾想按照排名打开的2篇CN blogs(即博客园)文章里给出的配置文件都有问题!!!

各种报错问题抛给GPT(包括DeepSeek、Qwen和ChatGPT),始终没有解决:我还不信邪(犟脾气认死理),修改配置文件,重试,还是有问题,浪费将近2小时,终于放弃。

博客园的没落和破败不是没有原因的。

其实,直接使用官方文件:

yaml 复制代码
name: searxng
services:
  core:
    container_name: searxng-core
    image: docker.io/searxng/searxng:${SEARXNG_VERSION:-latest}
    restart: always
    ports:
      - ${SEARXNG_HOST:+${SEARXNG_HOST}:}${SEARXNG_PORT:-8080}:${SEARXNG_PORT:-8080}
    env_file: ./.env
    volumes:
      - ./core-config/:/etc/searxng/:Z
      - core-data:/var/cache/searxng/
  valkey:
    container_name: searxng-valkey
    image: docker.io/valkey/valkey:9-alpine
    command: valkey-server --save 30 1 --loglevel warning
    restart: always
    volumes:
      - valkey-data:/data/
volumes:
  core-data:
  valkey-data:

2分钟部署成功。自动在本地新增如下文件(夹)

浏览器打开http://localhost:8080,页面如下

一定一定要确保SearXNG服务所在机器有网络服务能力,否则页面打开是这样的

其次,如果本机能访问网络,但搜索依旧超时,则需配置【首选项】。

具体步骤:首选项-搜索引擎-综合-禁用所有

然后开启sougou,点击保存

然后再次测试搜索功能,正常返回。

如上截图所示,几点解读:

  • 支持细粒度搜索管理。搜索场景分类为:综合(默认)、图片、视频、新闻、地图、音乐、IT、科学、文件、社媒、其他。
  • 搜索结果支持多语言、时间和安全设置,前两者大家都不陌生,安全搜索分3个等级(严格、中等、无),适用于过滤有害内容
  • 搜索指标:响应时间、搜索URL、下载结果(JSON)。其中URL即下面将提到的接口测试。

再回过头看看首选项:常规、UI、隐私、搜索引擎、特殊查询、cookie,基本上见名知意。

搜索引擎支持非常非常全,很多完全没听说过:bing、brave、duckduckgo、google、karmasearch、karmasearch videos、mojeek、presearch、presearch videos、qwant、startpage、wiby、yahoo、seznam(CZ)、naver(KO)、wikimedia(包括wikibooks、wikiquote、wikisource、wikispecies、wikiversity、wikivoyage)、aol、ask、boardreader、crowdview、ddg definitions、encyclosearch、fynd、gmx、mwmbl、searchmysite、tineye、wikidata、wikipedia、wolframalpha、yacy、yandex、 yep、bpb(DE)、 tagesschau(DE)、wikimini(FR)、360search(ZH)、baidu(ZH)、quark(ZH)、sogou(ZH)。

API

未联网或未配置情况下,Postman请求是这样的:

参数:

  • q:搜索关键词,唯一一个不可为空的参数
  • format:默认是html,支持json
  • language:默认auto,即自动检测q使用的语言,并优先返回该语言内容
  • time_range:时间范围,默认不限时间
  • safesearch:安全搜索,默认0,即,不使用安全搜索
  • categories:分类,默认general即综合

问题

API

如上图琐事,已经将搜索引擎全局禁用后,仅开启sougou,使用Postman测试,依旧超时,截图类似上面截图。

解决方法:

  1. 【可能是】需要调整settings.yaml文件,并重启服务。怀疑是浏览器上看到的首选项只能控制页面搜索,无法控制API搜索。
  2. 打开本地代理,让搜索走brave等搜索引擎。

403

报错截图

原因解读:SearXNG出于安全考虑,默认禁用JSON格式的API访问。

解决方法:在自动下载的settings.yml文件里对search.formats配置项增加json,仅需重启searxng-core服务:docker compose restart searxng-core

Invalid character

在浏览器或Postman搜索latest version of java都能成功返回,但Java代码里请求search接口报错:

复制代码
ERROR - 运行时异常:Invalid character ' ' for QUERY_PARAM in "latest version of java"
java.lang.IllegalArgumentException: Invalid character ' ' for QUERY_PARAM in "latest version of java"
    at org.springframework.web.util.HierarchicalUriComponents.verifyUriComponent(HierarchicalUriComponents.java:422)

基于WebClient实现时遇到上述问题,解决方法

Degoog

开源(GitHub)功能强大且高度可定制搜索聚合引擎,它可以从多个搜索引擎获取结果并在一个界面中展示。它支持自定义搜索引擎、bang 命令插件和 slot 插件,旨在为用户提供更私密、更个性化的搜索体验。官方文档

特点

  • 多引擎聚合:同时查询多个搜索引擎,将结果整合显示,避免单一引擎的偏见和限制
  • 插件系统:支持 bang 命令插件和 slot 插件,可扩展搜索功能和界面布局
  • 隐私保护:作为本地部署的搜索引擎代理,避免搜索历史被追踪和收集
  • 高度可定制:支持自定义搜索引擎、主题、别名等配置,满足个性化需求
    应用场景
  • 隐私搜索:注重隐私的用户可以使用 Degoog 替代传统搜索引擎,避免搜索行为被追踪
  • 研究工作:研究人员需要从多个搜索引擎获取信息,Degoog 可以一站式展示结果
  • 开发测试:开发人员可以快速测试不同搜索引擎的 API 和结果格式
  • 家庭网络:在家庭服务器上部署,为全家提供统一的隐私搜索入口
  • 企业内网:在企业内部部署,作为内部知识搜索的聚合工具

实战

提供多种本地部署方式

  • 基于Docker:
bash 复制代码
docker run -d \
  --name=degoog \
  --user 1000:1000 \
  --restart=unless-stopped \
  -p 4444:4444 \
  -v $(pwd)/data:/app/data \
  ghcr.io/fccview/degoog:latest
  • 基于docker-compose.yml
yaml 复制代码
services:
  degoog:
    image: ghcr.io/fccview/degoog:latest
    container_name: degoog
    restart: unless-stopped
    user: "1000:1000"
    ports:
      - "4444:4444"
    volumes:
      - ./data:/app/data

浏览器打开http://localhost:4444,开始体验。

Settings --> General ,启用 Proxy 并设置代理服务的地址,

相关推荐
老陈头聊SEO3 小时前
生成引擎优化(GEO)推动内容创作效果与用户体验的全新路径
其他·搜索引擎·seo优化
Elastic 中国社区官方博客6 小时前
Elasticsearch Serverless 中跨项目搜索(CPS)的工作原理
大数据·elasticsearch·搜索引擎·云原生·serverless
逸Y 仙X7 小时前
文章十七:ElasticSearch get\search查询相关参数
java·大数据·elasticsearch·搜索引擎·全文检索
Elastic 中国社区官方博客7 小时前
用于 JavaScript 和 TypeScript 的 ES|QL 查询构建器:流式、类型安全的查询构建
大数据·javascript·数据库·elasticsearch·搜索引擎·typescript·全文检索
Elastic 中国社区官方博客9 小时前
2026 年金融服务可观测性现状:从实施到业务影响
大数据·运维·人工智能·elasticsearch·搜索引擎·金融·自动化
刘佬GEO9 小时前
口腔门诊第一次做 GEO:第一步动作与起步策略拆解
网络·人工智能·搜索引擎·ai·语言模型
啊吧怪不啊吧10 小时前
C++之基于正倒排索引的Boost搜索引擎项目日志+server代码及详解
c++·搜索引擎·项目
Elastic 中国社区官方博客19 小时前
Elastic-caveman : 在不损失 Elastic 最佳效果的情况下,将 AI 响应 tokens 减少64%
大数据·运维·数据库·人工智能·elasticsearch·搜索引擎·全文检索
Elastic 中国社区官方博客1 天前
在 Elastic 中使用 MCP 自动化用户旅程以进行合成监控
大数据·运维·人工智能·elasticsearch·搜索引擎·自动化·可用性测试