2023-04-01 19:40:37 +03:00
### YGGo! - Open Source Web Search Engine
2023-04-23 07:16:40 +03:00
_Пр о е кт присвячується захисникам міста Ба х му т_
2023-04-12 12:53:51 +03:00
2023-04-05 17:54:46 +03:00
Written by inspiration to explore [Yggdrasil ](https://yggdrasil-network.github.io ) ecosystem, because of last [YaCy ](https://yacy.net/ ) node there was discontinued.
2023-04-02 20:50:30 +03:00
This engine also could be useful for crawling regular websites, small business resources, local networks.
2023-04-01 19:40:37 +03:00
2023-04-02 20:50:30 +03:00
The project goal - simple interface, clear architecture and lightweight server requirement.
2023-04-01 19:40:37 +03:00
2023-04-23 07:10:32 +03:00
#### Overview
2023-04-01 21:43:43 +03:00
2023-04-23 07:07:33 +03:00
![Home page ](https://github.com/YGGverse/YGGo/blob/main/media/main-sm.png?raw=true )
2023-04-01 21:43:43 +03:00
2023-04-03 17:56:51 +03:00
https://github.com/YGGverse/YGGo/tree/main/media
2023-04-01 19:40:37 +03:00
2023-04-23 07:09:28 +03:00
#### Online instances
* [http://[201:23b4:991a:634d:8359:4521:5576:15b7]/yggo](http://[201:23b4:991a:634d:8359:4521:5576:15b7]/yggo)
* [http://94.140.114.241/yggo/ ](http://94.140.114.241/yggo )
2023-04-01 19:40:37 +03:00
#### Requirements
```
2023-04-02 22:43:05 +03:00
php8^
php-dom
2023-04-01 19:40:37 +03:00
php-pdo
2023-04-02 22:43:38 +03:00
php-curl
2023-04-03 01:59:34 +03:00
php-gd
2023-04-07 04:04:24 +03:00
php-mysql
2023-04-07 18:24:50 +03:00
sphinxsearch
2023-04-01 19:40:37 +03:00
```
2023-04-03 17:56:51 +03:00
#### Installation
2023-04-01 21:01:55 +03:00
2023-04-23 09:03:02 +03:00
* The web root dir is `/public`
2023-04-23 09:03:53 +03:00
* Deploy the database using [MySQL Workbench ](https://www.mysql.com/products/workbench ) project presented in the `/database` folder
2023-04-23 09:03:02 +03:00
* Install [Sphinx Search Server ](https://sphinxsearch.com )
* Configuration examples are placed at `/config` folder
* Make sure `/storage` folder is writable
2023-04-23 09:07:06 +03:00
* Set up the `/crontab` scripts by following [example ](https://github.com/YGGverse/YGGo/blob/main/config/crontab.txt )
2023-04-07 04:04:24 +03:00
2023-04-23 03:29:02 +03:00
#### JSON API
2023-04-23 03:01:51 +03:00
2023-04-23 03:29:02 +03:00
Build third party applications / index distribution.
2023-04-23 03:03:27 +03:00
2023-04-23 03:04:01 +03:00
Could be enabled or disabled by `API_ENABLED` option
2023-04-23 03:01:51 +03:00
2023-04-23 03:03:27 +03:00
###### Address
2023-04-23 03:01:51 +03:00
```
/api.php
```
2023-04-25 19:35:52 +03:00
##### Search
2023-04-23 03:01:51 +03:00
Returns search results.
2023-04-23 03:03:27 +03:00
2023-04-23 03:04:01 +03:00
Could be enabled or disabled by `API_SEARCH_ENABLED` option
2023-04-23 03:01:51 +03:00
###### Request attributes
```
2023-04-23 03:08:49 +03:00
GET action=search - required
GET query={string} - optional, search request, empty if not provided
GET page={int} - optional, search results page, 1 if not provided
2023-04-23 03:01:51 +03:00
```
2023-04-25 19:35:52 +03:00
##### Hosts distribution
2023-04-23 03:01:51 +03:00
2023-04-23 03:08:49 +03:00
Returns node hosts collected with fields provided in `API_HOSTS_FIELDS` option.
2023-04-23 03:03:27 +03:00
2023-04-23 03:04:01 +03:00
Could be enabled or disabled by `API_HOSTS_ENABLED` option
2023-04-23 03:01:51 +03:00
###### Request attributes
```
2023-04-23 03:08:49 +03:00
GET action=hosts - required
2023-04-23 03:01:51 +03:00
```
2023-04-25 19:35:52 +03:00
##### Application manifest
Returns node information.
Could be enabled or disabled by `API_MANIFEST_ENABLED` option
###### Request attributes
```
GET action=manifest - required
```
2023-04-02 22:43:05 +03:00
#### Roadmap / ideas
2023-04-01 19:40:37 +03:00
2023-04-03 17:56:51 +03:00
* [x] Web pages full text ranking search
2023-04-02 23:37:09 +03:00
* [x] Make search results pagination
2023-04-07 04:04:24 +03:00
* [x] Add robots.txt support (Issue #2 )
2023-04-01 21:16:50 +03:00
* [ ] Improve yggdrasil links detection, add .ygg domain zone support
2023-04-01 21:38:30 +03:00
* [ ] Make page description visible - based on the cached content dump, when website description tag not available, add condition highlights
2023-04-01 19:55:41 +03:00
* [ ] Images search (basically implemented but requires testing and some performance optimization)
2023-04-09 00:07:06 +03:00
* [x] Index cleaner
2023-04-02 19:34:20 +03:00
* [ ] Crawl queue balancer, that depends from CPU available
* [ ] Implement smart queue algorithm that indexing new sites homepage in higher priority
2023-04-09 00:07:06 +03:00
* [ ] Implement database auto backup on crawl process completing
2023-04-07 15:03:00 +03:00
* [x] Add transactions to prevent data loss on DB crashes
2023-04-23 03:01:51 +03:00
* [x] JSON API
2023-04-01 19:55:41 +03:00
* [ ] Distributed index data sharing between the nodes trough service API
2023-04-03 01:41:13 +03:00
* [x] An idea to make unique gravatars for sites without favicons, because simpler to ident, comparing to ipv6
2023-04-01 21:26:25 +03:00
* [ ] An idea to make some visitors counters, like in good old times?
2023-04-01 21:31:51 +03:00
2023-04-07 04:04:24 +03:00
#### Contributions
2023-04-05 19:28:58 +03:00
2023-04-12 13:11:09 +03:00
Please make a new branch of master|sqliteway tree for each patch in your fork before create PR
2023-04-05 19:28:58 +03:00
```
git checkout master
git checkout -b my-pr-branch-name
```
2023-04-07 04:04:24 +03:00
See also: [SQLite tree ](https://github.com/YGGverse/YGGo/tree/sqliteway )
2023-04-03 17:56:51 +03:00
#### Donate to contributors
2023-04-02 22:31:49 +03:00
2023-04-08 20:13:13 +03:00
* @d47081: [BTC ](https://www.blockchain.com/explorer/addresses/btc/bc1qngdf2kwty6djjqpk0ynkpq9wmlrmtm7e0c534y ) | [DOGE ](https://dogechain.info/address/D5Sez493ibLqTpyB3xwQUspZvJ1cxEdRNQ ) | Support our server by order [Linux VPS ](https://www.yourserver.se/portal/aff.php?aff=610 )
2023-04-02 22:31:49 +03:00
2023-04-23 07:12:40 +03:00
#### License
* Engine sources [MIT License ](https://github.com/YGGverse/YGGo/blob/main/LICENSE )
* Home page animation by [alvarotrigo ](https://codepen.io/alvarotrigo/pen/GRvYNax )
2023-04-03 17:56:51 +03:00
#### Feedback
2023-04-01 21:31:51 +03:00
2023-04-03 17:56:51 +03:00
Please, feel free to share your ideas and bug reports [here ](https://github.com/YGGverse/YGGo/issues ) or use sources for your own implementations.
2023-04-01 21:31:51 +03:00
Have a good time.