【开源搜索引擎】Crawl4j

Crawl4J

0x01 简介

Crawl4j是一个开源的互联网搜索引擎。使用Crawl4j你可以在一个小时内索引大半个互联网。

开源地址 github.com/huzpsb/craw... 求Star

演示地址 apis.huzpsb.eu.org/search

0x02 简单使用

假设你已经正确的配置了Java环境(Java8/jrejdk均可/x32x64均可)。

首先,在命令行中直接运行

sh 复制代码
java -jar c4j.jar

会收到如图所示的提示。

现在输入锚点网址,个人而言,我比较推荐输入数个网址导航与技术博客的首页。 例如,输入

input 复制代码
https://juejin.cn/|https://2345.com/

后按下回车,即可完成锚点网址的设置。

随后设置抓取时间并耐心等待即可。

一个小时后,程序会自动退出,说明抓取已经完成。

抓取步骤只需要进行一次。

现在我们开始使用Craw4j。只需要正常启动:

每次程序启动后首次搜索时需要建立索引,因此耗时较长(秒级)。随后的每次搜索都是毫秒级的。

0x03 API与WebUI

我们知道,网页搜索引擎在许多场景中都有着丰富的应用。例如GPT-Web或者助手类应用程序。我们现在来说如何将Crawl4j应用于各个Java程序之中。

我们先建立一个类,然后导入必要的包:

java 复制代码
package org.eu.huzpsb.crawl4j;

import org.eu.huzpsb.crawl4j.search.*;
import java.util.List;

public class ApiDemo {
    public static void main(String[] args) {
        // TODO
    }
}

然后开始编写业务代码。其实核心业务代码就一行:

java 复制代码
List<PendingResult> results = Core.doSearch("掘金");

让我们来看一看返回的List:

这个List的成员有0~5个(最多5个,如果缺少数据可能少于5个),每个成员都有四个字段:

  • index:数据库内成员的id
  • weight:权重
  • title:标题
  • content:链接

基于此,我们可以开发其他应用程序。

现在我们来说WebUI的搭建,这步可能稍显麻烦。

首先我们需要前往下载一份BukkitHTTP: github.com/BukkitHTTP/...

按照说明启动并关闭一次,然后编写组件描述文件:

properties 复制代码
jar=c4j.jar
main=org.eu.huzpsb.c4j_web.Main
name=searcher
uri=/search

如图所示,将前端代码置于文件夹中,将数据库置于根目录中,再次启动BukkitHTTP即可。

0x04 碎碎念

Crawl4j的使用手感的确离大型搜索引擎还有距离。但是它具有许多不可替代的优势。例如:

  • 开源
  • 国产
  • 轻量
  • 可控

因此有许多时候有不可替代的优势。举例而言,在GPT下游应用中,很多时候我们希望让GPT能够搜索互联网。尤其是在本地做RLHF时,我们会有非常多的搜索需求,这时Crawl4j的断网搜索就显得尤为重要。同时Crawl4j也非常适合个人使用------------当你发现了宝藏网站/博客时,你可能会想要更多的注意它们,尤其是当你研究的细分领域很小众时。因为锚点网址附近的网页总是被非常好的索引了的,因此如果将这种博客或网站设为锚点,你就能建立自己个性化的搜索引擎。或者把数据库(就几M)和代码一起bundle到某些桌面或者移动端的应用里面也许也十分实用呢?比如说开发一款自带搜索的手机浏览器,而搜索不占用你的服务器资源(利用本地的数据库!不是本地抓取!)。

再讲一下该怎么扩充已有的索引库。一般来说,因为Crawl4j的抓取速度是十分迅速的,我们更推荐删除旧的索引库,直接重新建立。但是有的时候,出于历史考量(例如你希望保留过期的链接,出于某种原因?),你可以将旧的数据库命名为c44j_.db,再重新运行Crawl4j即可。

0x05 TL;DR

Crawl4j是一个开源的互联网搜索引擎。

开源地址 github.com/huzpsb/craw... 求Star

演示地址 apis.huzpsb.eu.org/search

相关推荐
江畔柳前堤5 小时前
roLabelImg 详细安装教程
开发语言·人工智能·后端·云原生
陈随易7 小时前
moon,apt和yum之外linux系统命令安装新选择
前端·后端·程序员
码事漫谈8 小时前
当单库日增 4.5TB,异构实时同步还能稳得住吗?
后端
IT_陈寒10 小时前
SpringBoot自动配置的坑,这次真踩疼我了
前端·人工智能·后端
shengjk110 小时前
AI Engineering 五代演进史:Prompt、RAG、Agent 到 Graph 的架构革命
后端
子兮曰10 小时前
AI 浏览器 Agent 的安全困局:当自动化工具可以偷走你的登录态
前端·人工智能·后端
妙码生花10 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(四十八):菜单规则管理实现
前端·后端·ai编程
XuCoder10 小时前
Redis 持久化:RDB 与 AOF
后端
Conan在掘金10 小时前
鸿蒙 7.0 智能体框架 2.0:意图即服务根因——从 InsightIntentExecutor 到 HMAF 2.0 Skill 演进
后端
掘金者阿豪11 小时前
折腾电科金仓 Docker 部署的一晚上:角色登录失败、远程连接失败,这几个坑终于踩完了
后端