Giter Site home page Giter Site logo

sese-engine's Introduction

【sese-engine】新时代的搜索引擎!

大家平时都会用百度和谷歌来搜索资料吧。不过大家有没有怀疑过,也许它们不那么可信?

百度很坏,之前也有和竞价排名相关的丑闻。谷歌好一点,它说它不作恶,但我也不完全相信它,毕竟每个人的善恶观本身就不同。我想,它们或多或少都藏起了一些什么。

那怎么办呢?

我发明了强大并且安全的sese-engine。它是一个轻量级的搜索引擎,可以快速部署在个人电脑上。

sese-engine通过爬取互联网上的数据,在本地建立各个网页的索引。这样一来,你就有了自己的搜索引擎,可以在本地直接搜索互联网上的信息。你也可以修改你的爬取和搜索配置,让搜索的结果能满足个性化的需求。

数据即未来,我们的未来要掌握在自己手中。

测试环境

一起来玩吧: https://sese.yyj.moe

对了,服务器是1年70元租的机器,配置很低。所以第一次查询可能会卡几秒,这是正常现象,大概率是服务进程被交换到硬盘里了。

部署

只需要1个Python3.8。数据库什么的都不用装,配环境很方便,好耶!

具体步骤是这些:

  1. 安装1个Python3.8

    Python版本太高的话,下一步会有依赖装不上。

  2. 用pip安装依赖

    pip install -r requirements.txt
  3. 运行启动脚本

    搜索引擎在windows和linux上都可以运行,所以有两个可选的启动脚本 启动.cmd启动.sh

这样你的搜索引擎服务应该就可以用了,你可以 curl http://127.0.0.1/search?q=test 试一下。

然后前端的仓库在这里: YunYouJun/sese-engine-ui。前端怎么部署呢,去看看云游君怎么说吧。

如果你想用docker部署的话,也可以参照: xiongnemo/sese-engine-docker

如果你想在树莓派上用docker部署的话,请参照:mengguyi/sese-engine-docker

可视化

默认情况下,终端上会显示一些简要指标,如果你想知道更详细的服务状态的话,可以通过赠送(?)的Grafana仪表盘查看。

Grafana需要单独接入,方法可以参考这里: 接入Grafana

它大概长这样:

./grafana/example.webp

代价

sese-engine的消耗不大,一个便宜的服务器或者树莓派就够用了。

默认配置下,sese-engine的爬虫大约需要1~2个CPU和1~2G的内存,搜索服务几乎没有消耗。如果你不想占用太多服务器资源,也可以根据 配置.py 里的注释调整各种类资源的使用量。

推荐的服务器配置如下:

  • 2核CPU

  • 4G内存

  • 128G硬盘

  • 5Mbps带宽

设计文档

设计文档在这里: 设计文档

赞助

如果你觉得sese-engine对你的工作或学习有帮助,欢迎来当我的女朋友。

要可爱的,最好是白发贫乳傲娇双马尾。

sese-engine's People

Contributors

mengguyi avatar rimochan avatar xiongnemo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

sese-engine's Issues

这个怎么好多都是中文的

服务器无法配置,代码中有不能编码的文字,说明编译环境有点问题,这个本地是可以运行的,封装到容器后,字符解码不了,默认是英文语言状态,中文环境需要另外设置。

提建议,提BUG

兄弟说实话,这个项目还是有一些BUG的,该有不通用性,但不得不承认他是一个有趣有意思的项目,我很喜欢,但我并不是做Py开发的,我在Macos的系统上,运行它。是失败的,报语法错误
image
还有就是可以能出一个,前后端的安装教程吗?又或者说,可以完善一下Docker部署教程吗?你文档中提到的Docker部署,非常简陋,当然对老手来说可能很轻车熟路,但对新手来说非常的不通俗易懂。
如果可以当然我希望,可以将前后端一并打包成镜像。这样的话我运行一个镜像然后映射端口就可以直接进行使用

话说,能在树莓派上部署吗

readme.md说:sese-engine的消耗不大,一个便宜的服务器或者树莓派就够用了。

但是我在树莓派上部署遇到了各种各样的问题(问题多到issue里放不下)

总的来说就是raspbian里的python是3.9,装上3.8之后reppy也是装不上。(ubuntu22.04也是一样)

anaconda和miniconda装不上,即便勉强装上运行pip也会报非法指令。

所以说@RimoChan或者其他人有在树莓派上部署成功的吗

SyntaxError: invalid syntax

File "人服务器.py", line 22 from rimo_utils.计时 import 计时 ^ SyntaxError: invalid syntax

想知道遇到這問題該怎麼辦

关于代理设置

可以将 代理的设置 放到配置.py,顺便再加一个代理白名单把localhost之类的放进去

这样方便管理http代理,不会因为http代理崩溃导致收获服务器.py上网.py之间通信中断而使爬虫挂掉

无法安装使用,文档是否应该补充或备注说明?

使用环境python3.8,使用pip install -r requirements.txt,首先提示要rust,然后卡在 Getting requirements to build wheel ... done
,重启后:
image

这个项目的引用包对rust有依赖?这是否与这个项目有关?作者大大是否确认过自己电脑里有没有装rust????????????????????

我随便点了个py文件看了眼,我笑了

我知道支持中文的啊,问题是我头一次见用中文的啊
我怀疑了下我自己的老花眼,换了几个浏览器,确认我没有用网页的翻译功能 :)

点submit new issue前,我又再次看了眼py文件 ^-^

启动问题-队列空了

@RimoChan 作者你好,在配置.py里面将入口 = 'https://baike.baidu.com/'改了后,仍然获取不到数据,如下图所示:

image

请问这是什么原因?辛苦看看

IndexError: list index out of range

每一条打印消息前都有这个错误,要如何解决?
(已尝试重新部署,但无法解决)

另外所有数据均为零,会不会有些奇怪...

以下是一部分内容

IndexError: list index out of range
收到请求数: 0it [00:00, ?it/s]
丢弃行数: 0it [00:00, ?it/s]
内存行数:   0%|                          | 0/10000000 [00:00<?, ?it/s]
小清洗次数: 0it [00:00, ?it/s]
大清洗索引数: 0it [00:00, ?it/s]
内存键数: 0it [00:00, ?it/s]
内存键数: 0it [00:00, ?it/s]    Traceback (most recent call last):
  File "收获服务器.py", line 172, in <module>
    _抽样检查(word)0, ?it/s]
  File "收获服务器.py", line 164, in _抽样检查
    小 = zt[:单键最多url][-1]]
IndexError: list index out of range
收到请求数: 0it [00:00, ?it/s]
丢弃行数: 0it [00:00, ?it/s]
内存行数:   0%|                          | 0/10000000 [00:00<?, ?it/s]
小清洗次数: 0it [00:00, ?it/s]
大清洗索引数: 0it [00:00, ?it/s]
内存键数: 0it [00:00, ?it/s]
内存键数: 0it [00:00, ?it/s]    Traceback (most recent call last):
  File "收获服务器.py", line 172, in <module>
    _抽样检查(word)0, ?it/s]
  File "收获服务器.py", line 164, in _抽样检查
    小 = zt[:单键最多url][-1]]

最好可以添加链接,搜索结果优先展示

我们在书签栏上收藏了很多东西。但是总会忘记我们以前收藏了什么东西,收藏下来东西都是很好的。
所以把这些链接抓取下来,后面搜索到相关的东西的时候优先展示。而且可以防止原始网页关掉了。

考虑使用urllib.robotparser代替reppy

reppy由于长期缺乏维护,在大多现有主流linux发行版上难以安装。且在未来可能会出现相当多的漏洞
所以请考虑使用urllib.robotparser代替reppy

如何在树莓派上部署

本issue是在记录我在树莓派上部署的一些过程,有可能会帮到你。但请不要拿来主义。其中一些方法可能会因人而异因网而异

  1. 首先你需要有一个树莓派(我这里是4B,其他的不知道能不能部署)
  2. ubuntu20.04

为什么用ubuntu20.04?

因为ubuntu20.04自带的python是python3.8

把ubuntu20.04烧写到TF卡并插入树莓派&&配置好ssh完成初始化(这步不用写吧)

git clone https://github.com/RimoChan/sese-engine.git

另外用apt安装pip,具体包名叫什么我忘了。终端里执行一下pip就有提示

你要是没用apt安装pip大概率也不会装gccg++之类的。下面安装依赖肯定出错

到用pip安装依赖这一步就要注意了

如果用用pip install -r requirements.txt会提示错误(好像是和ruby相关的)

我照着requirements.txt直接用pip一个一个安装的

到此基本完成了,如果你需要使用代理,看一下启动.sh启动.cmd里注释的内容

代理这块填自己的。如果你没有代理。记得把配置.py里的入口改一下

频繁重启程序会严重影响爬虫工作吗?

想部署在家用机上,就着每天用电脑的时间爬取,玩游戏或者有重负载的时候关掉,看视频刷网页的时候打开。
重启之后爬虫会继续上次的进度吗?因为感觉有用的新网站很少,全网爬过一次之后,每天用电脑的时间就够用了。
不过部署在家用机上还有一个问题就是翻墙,不知道爬虫能不能加个socks5
部署在本地,响应速度也能快一点

我是否可以添加多个爬虫?

这样的配置文件可行嘛

from pathlib import Path

注释的内容都是加大这些参数的情况下的变化

单键最多url = 11000 # 增加多关键词查找能力,增加硬盘消耗,略微降低爬取效率
单键最多相同域名url = 20 # 增加有效结果的相关性,减少有效结果数量
大清洗行数 = 10000000 # 增加平均爬取效率,增加峰值内存
单键最多新增url = 10000 # 减少键的url的增长速度
新增键需url数 = 3 # 减少键的增长速度

爬虫的名字 = 'loli_spider'
爬取线程数 = 44 # 增加爬取效率,增加网络和CPU消耗
爬取集中度 = 0.7 # 增加爬取目标集中在单个域名下的概率 (超过1的值没有效果)
单网页最多关键词 = 250
入口 = 'https://cn.bing.com/'

爬虫的名字 = 'loli_spider_baidu'
爬取线程数 = 44 # 增加爬取效率,增加网络和CPU消耗
爬取集中度 = 0.7 # 增加爬取目标集中在单个域名下的概率 (超过1的值没有效果)
单网页最多关键词 = 250
入口 = 'https://baidu.com/'

使用在线摘要 = True # 增加搜索结果信息的可读性,增加搜索时间
在线摘要限时 = 3 # 减少信息不完整的搜索结果数量,增加搜索时间
权重每日衰减 = 0.996 # 增加已经过期的网站的权重
语种权重 = 0.5 # 增加中文网站的权重,减少我看不懂的语种的网站的权重
连续关键词权重 = 1.3 # 增加连续的关键词的权重,例如搜索「萝莉美少女」时,「萝莉美少女」会有加成,但是「萝莉和美少女」没有
反向链接权重 = 1 # 增加反向链接更多的网站的权重
减权关键词 = []
减权关键词权重 = 0.1 # 减少含有减权关键词的域名的权重

存储位置 = Path('./savedata')
~
~

希望改进文档

在 Arch Linux for ARM 实际测试该仓库,发现文档部分内容说明较模糊,希望能对文档做出改进:

  • 启动命令:本仓库根路径下存在许多 Python 代码文件,但没有明显注明执行哪个文件可以启动;
  • Python 版本:本程序所需的部分依赖包对 Python 3.10 兼容性差,重新安装 Python 3.8 可以正常安装这些依赖包,希望在文档中注明适宜的 Python 版本。

好,新问题

Warning : `load_model` does not return WordVectorModel or SupervisedModel any more, but a `FastText` object which is very similar.
Traceback (most recent call last):
  File "收获服务器.py", line 13, in <module>
    from utils import netloc, json_loads, 小清洗, 好ThreadPoolExecutor
  File "D:\sese-engine\Server\utils.py", line 108, in <module>
    lang_model = fasttext.load_model('lid.176.ftz')
  File "C:\Program Files\python\lib\site-packages\fasttext\FastText.py", line 441, in load_model
    return _FastText(model_path=path)
  File "C:\Program Files\python\lib\site-packages\fasttext\FastText.py", line 98, in __init__
    self.f.loadModel(model_path)
ValueError: lid.176.ftz cannot be opened for loading!

有关女装

要可爱的,最好是白发贫乳傲娇双马尾。

女装白发贫乳傲娇双马尾但可能没那么可爱的要嘛😃

(PS:试了几个关键词但迟迟不出结果,准备在本地部署再试一次。)

关于自定义

黄桑,请问给部署于自己服务器上的此项目进行自定义(包括网页和引擎)是被允许的吗?修改后的网页仍将保留指向此处的链接与作者署名。
再分发应该不行吧。

curl测试似乎有问题

运行启动.sh输出为:
内存键数: 0it [00:00, ?it/s] * Serving Flask app '收获服务器' (lazy loading)

  • Environment: productiont/s]/s]
    WARNING: This is a development server. Do not use it in a production deployment.
    Use a production WSGI server instead.
  • Debug mode: off
    访问url数: 1it [00:03, 3.01s/it] 队列空了,坏!
    0%| | 0/150 [00:05<?, ?it/s]
    访问url数: 1it [00:08, 8.63s/it] | 0/150 [00:00<?, ?it/s]
    访问成功url数: 0it [00:08, ?it/s]dTimeout: 0it [00:00, ?it/s]
    [上网.py:110]reppy.exceptions.ReadTimeout: 1it [00:00, 3.14it/s]

运行curl http://127.0.0.1:4950/search?q=test
提示为:curl: (7) Failed to connect to 127.0.0.1 port 4950: 拒绝连接

是项目没有正常启动嘛?QAQ

功能建议

  1. 来个抓取最终分数较高的网站的icon
  2. 再来个记录网址抓取时间,并且根据时间的延长降低网站的最终分数避免大量的过期数据()

怪得很,issues是怎么添加标签的来着

sese-engine是否完全遵守了robots协议以及配置.py里爬虫的名字是什么意思

我想问一下sese-engine是否完全遵守了robots协议
我在https://sese.yyj.moe 上搜索bilibili时得到如下结果
image
但是根据https://www.bilibili.com/robots.txt 来看,sese-engine里默认配置的loli_spider 显然不属于允许的UA
那么如果sese-engine完全遵守了robots协议,则不会爬到https://www.bilibili.com
所以是https://sese.yyj.moe 修改了爬虫的名字还是sese-engine不是完全遵守robots协议

另外
大部**分网站的robots.txt喜在文件末尾写上

User-agent: *
Disallow: /

所以如果我希望能和正常的搜索引擎一样爬取是否需要修改 爬虫的名字

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.