searxng-search

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

SearXNG Search

SearXNG 搜索

SearXNG is a privacy-respecting metasearch engine that you can run locally. It aggregates results from multiple search engines and package repositories, returning clean JSON output.
SearXNG是一款注重隐私的元搜索引擎,你可以在本地部署它。它聚合多个搜索引擎和软件包仓库的结果,返回简洁的JSON格式输出。

Quick Start

快速开始

Start SearXNG:
bash
start-searxng --detach
This will:
  • Auto-detect podman or docker
  • Create a minimal config with JSON output enabled
  • Start SearXNG on
    http://localhost:8888
  • Wait until ready
Stop SearXNG:
bash
podman stop searxng  # or: docker stop searxng
Custom port:
bash
start-searxng --port 9999 --detach
启动SearXNG:
bash
start-searxng --detach
这将:
  • 自动检测podman或docker
  • 创建启用JSON输出的最小化配置
  • http://localhost:8888
    启动SearXNG
  • 等待服务就绪
停止SearXNG:
bash
podman stop searxng  # 或:docker stop searxng
自定义端口:
bash
start-searxng --port 9999 --detach

Quick Reference

快速参考

TaskCommandCategory
General web search
curl "http://localhost:8888/search?q=<query>&format=json"
general
Search Cargo/crates.io
curl "http://localhost:8888/search?q=<crate>&format=json&categories=cargo"
cargo
Search npm packages
curl "http://localhost:8888/search?q=<pkg>&format=json&categories=packages"
packages
Search code repositories
curl "http://localhost:8888/search?q=<query>&format=json&categories=repos"
repos
Search IT resources
curl "http://localhost:8888/search?q=<query>&format=json&categories=it"
it
Limit resultsAdd
&limit=N
to URL
-
Multiple categories
&categories=cat1,cat2
-
任务命令分类
通用网页搜索
curl "http://localhost:8888/search?q=<query>&format=json"
general
搜索Cargo/crates.io
curl "http://localhost:8888/search?q=<crate>&format=json&categories=cargo"
cargo
搜索npm软件包
curl "http://localhost:8888/search?q=<pkg>&format=json&categories=packages"
packages
搜索代码仓库
curl "http://localhost:8888/search?q=<query>&format=json&categories=repos"
repos
搜索IT资源
curl "http://localhost:8888/search?q=<query>&format=json&categories=it"
it
限制结果数量在URL中添加
&limit=N
-
多分类搜索
&categories=cat1,cat2
-

Available Categories

可用分类

Run to see all categories:
bash
curl -s "http://localhost:8888/config" | jq '.categories'
Notable categories:
  • general: General web search (default)
  • cargo: Rust crates from crates.io
  • packages: Multi-repo (npm, rubygems, haskell/hoogle, hex, packagist, metacpan, pub.dev, pkg.go.dev, docker hub, alpine, etc.)
  • it: IT/tech resources (includes GitHub, Docker Hub, crates.io)
  • repos: Code repositories
  • code: Code search
  • scientific publications: Academic papers
  • news, videos, images, books, etc.
See package-engine-status.md for comprehensive package search testing results.
运行以下命令查看所有分类:
bash
curl -s "http://localhost:8888/config" | jq '.categories'
主要分类包括:
  • general:通用网页搜索(默认)
  • cargo:来自crates.io的Rust软件包
  • packages:多仓库支持(npm、rubygems、haskell/hoogle、hex、packagist、metacpan、pub.dev、pkg.go.dev、Docker Hub、Alpine等)
  • it:IT/技术资源(包含GitHub、Docker Hub、crates.io)
  • repos:代码仓库
  • code:代码搜索
  • scientific publications:学术论文
  • newsvideosimagesbooks
查看package-engine-status.md获取完整的软件包搜索测试结果。

JSON Response Structure

JSON响应结构

json
{
  "query": "search term",
  "number_of_results": 0,
  "results": [
    {
      "url": "https://example.com",
      "title": "Result Title",
      "content": "Snippet of content...",
      "publishedDate": "2025-01-01T00:00:00",
      "engine": "duckduckgo",
      "engines": ["duckduckgo", "startpage"],
      "score": 3.0,
      "category": "general"
    }
  ],
  "answers": [],          // Direct answers/infoboxes
  "suggestions": [],      // Search suggestions
  "corrections": [],      // Query corrections
  "infoboxes": [],       // Knowledge panels
  "unresponsive_engines": []
}
json
{
  "query": "search term",
  "number_of_results": 0,
  "results": [
    {
      "url": "https://example.com",
      "title": "Result Title",
      "content": "Snippet of content...",
      "publishedDate": "2025-01-01T00:00:00",
      "engine": "duckduckgo",
      "engines": ["duckduckgo", "startpage"],
      "score": 3.0,
      "category": "general"
    }
  ],
  "answers": [],          // 直接答案/信息框
  "suggestions": [],      // 搜索建议
  "corrections": [],      // 查询修正
  "infoboxes": [],       // 知识面板
  "unresponsive_engines": []
}

Common Usage Patterns

常见使用模式

1. Package Repository Searches

1. 软件包仓库搜索

Cargo/Rust crates:
bash
curl -s "http://localhost:8888/search?q=tokio&format=json&categories=cargo" | \
  jq '.results[] | {title, url, content}'
npm packages:
bash
curl -s "http://localhost:8888/search?q=express&format=json&categories=packages" | \
  jq '.results[] | select(.engines[] == "npm") | {title, url, content}'
PyPI packages (workaround - see below):
bash
undefined
Cargo/Rust软件包:
bash
curl -s "http://localhost:8888/search?q=tokio&format=json&categories=cargo" | \
  jq '.results[] | {title, url, content}'
npm软件包:
bash
curl -s "http://localhost:8888/search?q=express&format=json&categories=packages" | \
  jq '.results[] | select(.engines[] == "npm") | {title, url, content}'
PyPI软件包(替代方案 - 见下文):
bash
undefined

PyPI engine is enabled but not returning results in current SearXNG config

PyPI引擎已启用,但当前SearXNG配置下无法返回结果

Use direct API or qypi CLI instead (see PyPI Workaround section)

请使用直接API或qypi CLI工具替代(查看PyPI替代方案部分)

undefined
undefined

2. Web Search with Filtering

2. 带过滤的网页搜索

IT/Tech search:
bash
curl -s "http://localhost:8888/search?q=rust+async&format=json&categories=it" | \
  jq '.results[0:5] | .[] | {title, url, engines}'
GitHub repositories:
bash
curl -s "http://localhost:8888/search?q=machine+learning&format=json&categories=repos" | \
  jq '.results[] | select(.engines[] == "github") | {title, url}'
IT/技术搜索:
bash
curl -s "http://localhost:8888/search?q=rust+async&format=json&categories=it" | \
  jq '.results[0:5] | .[] | {title, url, engines}'
GitHub仓库:
bash
curl -s "http://localhost:8888/search?q=machine+learning&format=json&categories=repos" | \
  jq '.results[] | select(.engines[] == "github") | {title, url}'

3. Extracting Specific Information

3. 提取特定信息

Get top 3 results:
bash
curl -s "http://localhost:8888/search?q=rust+ownership&format=json" | \
  jq '.results[0:3] | .[] | {title, url, content}'
Check which engines returned results:
bash
curl -s "http://localhost:8888/search?q=python&format=json" | \
  jq '.results[0].engines'
Get answer boxes/infoboxes:
bash
curl -s "http://localhost:8888/search?q=rust+language&format=json" | \
  jq '.infoboxes, .answers'
获取前3条结果:
bash
curl -s "http://localhost:8888/search?q=rust+ownership&format=json" | \
  jq '.results[0:3] | .[] | {title, url, content}'
查看哪些引擎返回了结果:
bash
curl -s "http://localhost:8888/search?q=python&format=json" | \
  jq '.results[0].engines'
获取答案框/知识面板:
bash
curl -s "http://localhost:8888/search?q=rust+language&format=json" | \
  jq '.infoboxes, .answers'

PyPI Workaround

PyPI替代方案

Since PyPI is not returning results in SearXNG (despite being enabled), use these alternatives:
由于SearXNG中PyPI无法返回结果(尽管已启用),请使用以下替代方案:

Option 1: Direct PyPI JSON API

方案1:直接调用PyPI JSON API

bash
undefined
bash
undefined

Search (limited to simple package name matching)

搜索(仅支持简单软件包名称匹配)

curl -s "https://pypi.org/pypi/<package>/json" | jq '.info | {name, summary, version, home_page}'
curl -s "https://pypi.org/pypi/<package>/json" | jq '.info | {name, summary, version, home_page}'

Example:

示例:

curl -s "https://pypi.org/pypi/requests/json" | jq '.info.summary'
undefined
curl -s "https://pypi.org/pypi/requests/json" | jq '.info.summary'
undefined

Option 2: qypi CLI tool

方案2:qypi CLI工具

bash
undefined
bash
undefined

Install

安装

uvx qypi search pandas --json
uvx qypi search pandas --json

Get package info

获取软件包信息

uvx qypi info requests --json
uvx qypi info requests --json

List releases

列出版本

uvx qypi releases flask --json

See `references/pypi-direct-search.md` for more details.
uvx qypi releases flask --json

更多详情请查看`references/pypi-direct-search.md`。

Integration with Nushell

与Nushell集成

Create a helper function:
nu
def searx [
  query: string,
  --category (-c): string = "general",
  --limit (-l): int = 10
] {
  http get $"http://localhost:8888/search?q=($query | url encode)&format=json&categories=($category)"
  | get results
  | first $limit
  | select title url content engines
}
Usage:
nu
searx "tokio async" --category cargo --limit 5
searx "flask tutorial" --category general
创建辅助函数:
nu
def searx [
  query: string,
  --category (-c): string = "general",
  --limit (-l): int = 10
] {
  http get $"http://localhost:8888/search?q=($query | url encode)&format=json&categories=($category)"
  | get results
  | first $limit
  | select title url content engines
}
使用示例:
nu
searx "tokio async" --category cargo --limit 5
searx "flask tutorial" --category general

Debugging

调试

Check SearXNG config:
bash
curl -s "http://localhost:8888/config" | jq '.engines[] | select(.name == "pypi")'
Check for engine errors:
bash
curl -s "http://localhost:8888/search?q=test&format=json" | jq '.unresponsive_engines'
Test specific engine:
bash
curl -s "http://localhost:8888/search?q=flask&format=json&engines=pypi" | jq .
检查SearXNG配置:
bash
curl -s "http://localhost:8888/config" | jq '.engines[] | select(.name == "pypi")'
检查引擎错误:
bash
curl -s "http://localhost:8888/search?q=test&format=json" | jq '.unresponsive_engines'
测试特定引擎:
bash
curl -s "http://localhost:8888/search?q=flask&format=json&engines=pypi" | jq .

Known Issues

已知问题

  • PyPI engine enabled but not working: Use direct API or qypi CLI as workaround
  • Cargo category sometimes returns empty: Try
    categories=packages
    or
    categories=it
    which also include crates.io
  • Rate limiting: SearXNG may rate-limit if too many requests in quick succession
  • PyPI引擎已启用但无法工作:使用直接API或qypi CLI作为替代方案
  • Cargo分类有时返回空结果:尝试使用
    categories=packages
    categories=it
    ,这些分类也包含crates.io的内容
  • 速率限制:如果短时间内发送过多请求,SearXNG可能会触发速率限制

Configuration

配置

Using the Helper Script (Recommended)

使用辅助脚本(推荐)

The
start-searxng
script creates a minimal configuration automatically:
bash
start-searxng --help
Default config includes:
  • use_default_settings: true
    (inherits all SearXNG defaults)
  • JSON format enabled
  • Rate limiting disabled (for local use)
  • Secret key (change in production!)
start-searxng
脚本会自动创建最小化配置:
bash
start-searxng --help
默认配置包括:
  • use_default_settings: true
    (继承所有SearXNG默认设置)
  • 启用JSON格式
  • 禁用速率限制(适用于本地使用)
  • 密钥(生产环境请修改!)

Using Your Own Config

使用自定义配置

bash
start-searxng --config /path/to/your/config/dir
Your config directory should contain
settings.yml
.
bash
start-searxng --config /path/to/your/config/dir
你的配置目录应包含
settings.yml
文件。

Manual Container Start

手动启动容器

bash
undefined
bash
undefined

Create config

创建配置

mkdir -p /tmp/searxng-config cat > /tmp/searxng-config/settings.yml << 'EOF' use_default_settings: true search: formats: - html - json server: secret_key: "change-me-in-production" bind_address: "0.0.0.0" port: 8080 EOF
mkdir -p /tmp/searxng-config cat > /tmp/searxng-config/settings.yml << 'EOF' use_default_settings: true search: formats: - html - json server: secret_key: "change-me-in-production" bind_address: "0.0.0.0" port: 8080 EOF

Start with podman

使用podman启动

podman run --rm -d --name searxng
-p 8888:8080
-v /tmp/searxng-config:/etc/searxng:Z
docker.io/searxng/searxng:latest
podman run --rm -d --name searxng
-p 8888:8080
-v /tmp/searxng-config:/etc/searxng:Z
docker.io/searxng/searxng:latest

Or with docker

或使用docker启动

docker run --rm -d --name searxng
-p 8888:8080
-v /tmp/searxng-config:/etc/searxng
docker.io/searxng/searxng:latest
undefined
docker run --rm -d --name searxng
-p 8888:8080
-v /tmp/searxng-config:/etc/searxng
docker.io/searxng/searxng:latest
undefined

Check Logs

查看日志

bash
podman logs searxng  # or: docker logs searxng
bash
podman logs searxng  # 或:docker logs searxng

Advanced Config

高级配置

See SearXNG Settings Documentation for all options.
Minimal config to add JSON output to defaults:
yaml
use_default_settings: true
search:
  formats:
    - html
    - json
所有配置选项请查看SearXNG设置文档
在默认设置基础上添加JSON输出的最小配置:
yaml
use_default_settings: true
search:
  formats:
    - html
    - json