2023-04-25 19:44:25 +03:00
### YGGo! - Distributed & Open Source Web Search Engine
2023-04-01 19:40:37 +03:00
2023-04-23 07:16:40 +03:00
_Пр о е кт присвячується захисникам міста Ба х му т_
2023-04-12 12:53:51 +03:00
2023-08-07 00:13:04 +03:00
Written by inspiration to explore [Yggdrasil ](https://github.com/yggdrasil-network ) 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-07-27 11:44:42 +03:00
php-xml
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-05-13 03:01:00 +03:00
php-mbstring
2023-05-13 10:15:07 +03:00
php-zip
2023-04-07 04:04:24 +03:00
php-mysql
2023-07-27 17:53:36 +03:00
php-memcached
memcached
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-08-07 14:00:13 +03:00
* `git clone https://github.com/YGGverse/YGGo.git`
2023-08-07 14:04:32 +03:00
* `cd YGGo`
2023-08-07 14:00:13 +03:00
* `composer install`
2023-08-07 14:04:32 +03:00
### Setup
* Server configuration `/example/environment`
2023-08-07 14:00:13 +03:00
* The web root dir is `/src/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-07-29 14:37:01 +03:00
* Install [Sphinx Search Server ](https://sphinxsearch.com )
2023-05-15 21:18:30 +03:00
* Configuration examples presented at `/config` folder
2023-08-07 14:00:13 +03:00
* Make sure `/src/storage/cache` , `/src/storage/tmp` , `/src/storage/snap` folders are writable
* Set up the `/src/crontab` 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
2023-05-10 12:47:36 +03:00
GET type={string} - optional, filter mime type of available or empty
2023-04-23 03:08:49 +03:00
GET page={int} - optional, search results page, 1 if not provided
2023-05-01 20:09:28 +03:00
GET mode=SphinxQL - optional, enable extended SphinxQL syntax
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-05-15 21:18:30 +03:00
Returns 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
2023-08-05 19:06:39 +03:00
Returns node information for other nodes that have same `CRAWL_MANIFEST_API_VERSION` and `DEFAULT_HOST_URL_REGEXP` conditions.
2023-04-25 19:35:52 +03:00
Could be enabled or disabled by `API_MANIFEST_ENABLED` option
###### Request attributes
```
GET action=manifest - required
```
2023-04-29 07:49:09 +03:00
#### Search textual filtering
2023-05-01 20:09:28 +03:00
##### Default constructions
2023-05-01 19:09:28 +03:00
```
2023-06-05 13:44:23 +03:00
word prefix:
2023-06-05 13:40:35 +03:00
yg*
2023-05-01 19:09:28 +03:00
operator OR:
hello | world
operator MAYBE:
hello MAYBE world
operator NOT:
hello -world
strict order operator (aka operator "before"):
aaa < < bbb < < ccc
exact form modifier:
raining =cats and =dogs
field-start and field-end modifier:
^hello world$
keyword IDF boost modifier:
boosted^1.234 boostedfieldend$^1.234
```
2023-05-01 20:09:28 +03:00
##### Extended syntax
https://sphinxsearch.com/docs/current.html#extended -syntax
Could be enabled with following attributes
```
GET m=SphinxQL
```
2023-05-05 11:46:03 +03:00
#### Roadmap
2023-04-01 19:40:37 +03:00
2023-05-05 12:49:07 +03:00
##### Basic features
2023-05-15 09:18:18 +03:00
* [x] Web pages full text ranking search
+ [x] Sphinx
2023-05-14 19:42:55 +03:00
* [x] Unlimited content MIME crawling
2023-05-05 12:49:07 +03:00
* [x] Flexible settings compatible with IPv4/IPv6 networks
2023-05-13 05:54:15 +03:00
* [x] Extended search syntax support
2023-05-14 19:42:55 +03:00
* [x] Compressed page history snaps with multi-provider storage sync
2023-07-29 14:37:01 +03:00
+ [x] Local (unlimited locations)
+ [x] Remote FTP (unlimited mirrors)
2023-05-15 09:18:18 +03:00
+ [x] Privacy-oriented downloads counting, traffic controls
2023-05-05 12:49:07 +03:00
##### UI
2023-05-05 12:59:46 +03:00
* [x] CSS only, JS-less interface
2023-05-15 21:18:30 +03:00
* [x] Unique host ident icons
2023-07-30 21:53:30 +03:00
* [x] Content MIME tabs (#1 )
2023-05-14 01:51:30 +03:00
* [x] Page index explorer
2023-05-14 01:45:55 +03:00
+ [x] Meta
2023-05-14 19:41:20 +03:00
+ [x] Snaps history
2023-05-14 01:45:55 +03:00
+ [x] Referrers
2023-07-26 13:06:42 +03:00
* [x] Top hosts page
2023-05-15 21:18:30 +03:00
* [ ] Safe media preview
2023-05-05 12:49:07 +03:00
* [ ] Results with found matches highlight
2023-05-13 10:18:05 +03:00
* [ ] The time machine feature by content snaps history
2023-05-05 12:49:07 +03:00
##### API
2023-05-05 13:22:53 +03:00
* [ ] Index API
2023-05-05 13:15:49 +03:00
+ [x] Manifest
+ [x] Search
+ [x] Hosts
2023-05-14 19:41:20 +03:00
+ [ ] Snaps
2023-05-05 12:49:07 +03:00
* [ ] Context advertising API
##### Crawler
* [x] Auto crawl links by regular expression rules
2023-05-08 11:04:59 +03:00
+ [x] Pages
+ [x] Manifests
2023-05-05 12:49:07 +03:00
* [x] Robots.txt / robots meta tags support (#2 )
* [x] Specific rules configuration for every host
2023-05-05 11:49:16 +03:00
* [x] Auto stop crawling on disk quota reached
2023-05-05 12:52:20 +03:00
* [x] Transactions support to prevent data loss on queue failures
2023-05-05 13:20:50 +03:00
* [x] Distributed index crawling between YGGo nodes trough manifest API
2023-05-10 14:32:36 +03:00
* [x] MIME Content-type settings
2023-05-06 08:45:37 +03:00
* [x] Ban non-condition links to prevent extra requests
2023-05-08 11:04:59 +03:00
* [x] Debug log
2023-06-04 11:49:25 +03:00
* [x] Index homepages and shorter URI with higher priority
2023-06-04 14:58:33 +03:00
* [x] Collect target location links on page redirect available
2023-08-02 12:44:10 +03:00
* [x] Collect referrer pages (redirects including)
2023-08-02 15:43:44 +03:00
* [x] URL aliasing support on PR calculation
2023-06-25 22:12:07 +03:00
* [ ] Host page DOM elements collecting by CSS selectors
* [ ] Custom settings for each host
2023-06-13 17:35:47 +03:00
* [ ] XML Feeds support
2023-07-27 11:44:42 +03:00
+ [x] Sitemap
2023-06-13 17:35:47 +03:00
+ [ ] RSS
+ [ ] Atom
2023-05-05 12:49:07 +03:00
* [ ] Palette image index / filter
* [ ] Crawl queue balancer, that depends of CPU available
2023-08-07 00:13:04 +03:00
* [x] Networks integration
+ [x] [yggdrasil ](https://github.com/yggdrasil-network )
+ [x] [YGGstate ](https://github.com/YGGverse/YGGstate ) (unlimited nodes)
+ [x] DB
+ [ ] API
2023-05-05 12:49:07 +03:00
2023-05-08 11:04:59 +03:00
##### Cleaner
2023-06-25 22:12:07 +03:00
2023-08-03 15:33:34 +03:00
* [x] Banned pages reset by timeout
2023-06-01 00:07:11 +03:00
* [x] DB tables optimization
2023-05-08 11:04:59 +03:00
2023-06-25 22:12:07 +03:00
##### CLI
2023-08-05 21:11:40 +03:00
_*CLI interface still under construction, use it for your own risk!_
2023-06-25 22:12:07 +03:00
* [x] help
2023-08-02 15:43:44 +03:00
* [x] db
* [x] optimize
[x] crontab
2023-07-30 22:05:37 +03:00
* [x] crawl
* [x] clean
2023-08-05 21:16:09 +03:00
* [ ] hostSetting
2023-08-14 12:22:54 +03:00
+ [x] get
+ [x] set
+ [ ] list
2023-08-05 21:16:09 +03:00
+ [ ] delete
+ [ ] flush
2023-08-02 15:43:44 +03:00
* [x] hostPage
+ [x] rank
+ [x] reindex
2023-07-30 21:53:30 +03:00
* [x] hostPageSnap
2023-08-02 15:43:44 +03:00
+ [x] repair
+ [x] db
+ [x] fs
+ [ ] reindex
2023-07-30 22:08:05 +03:00
+ [ ] truncate
2023-06-25 22:12:07 +03:00
* [x] hostPageDom
+ [x] generate
+ [x] truncate
2023-05-05 12:49:07 +03:00
##### Other
2023-05-05 12:17:48 +03:00
* [ ] Administrative panel for useful index moderation
2023-05-05 13:32:56 +03:00
* [ ] Deployment tools
2023-05-15 21:25:54 +03:00
* [ ] Testing
2023-05-15 21:54:37 +03:00
* [ ] Documentation
2023-05-05 12:49:07 +03:00
2023-04-07 04:04:24 +03:00
#### Contributions
2023-04-05 19:28:58 +03:00
2023-07-25 18:45:02 +03:00
Please make a new branch of main|sqliteway tree for each patch in your fork before create PR
2023-04-05 19:28:58 +03:00
```
2023-07-25 18:45:02 +03:00
git checkout main
2023-04-05 19:28:58 +03:00
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-08-15 11:50:18 +03:00
* @d47081: [BTC ](https://www.blockchain.com/explorer/addresses/btc/bc1qngdf2kwty6djjqpk0ynkpq9wmlrmtm7e0c534y ) | [LTC ](https://live.blockcypher.com/ltc/address/LUSiqzKsfB1vBLvpu515DZktG9ioKqLyj7 ) | [XMR ](835gSR1Uvka19gnWPkU2pyRozZugRZSPHDuFL6YajaAqjEtMwSPr4jafM8idRuBWo7AWD3pwFQSYRMRW9XezqrK4BEXBgXE ) | [ZEPH ](ZEPHsADHXqnhfWhXrRcXnyBQMucE3NM7Ng5ZVB99XwA38PTnbjLKpCwcQVgoie8EJuWozKgBiTmDFW4iY7fNEgSEWyAy4dotqtX ) | [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
2023-08-16 12:47:09 +03:00
2023-04-23 07:12:40 +03:00
* Engine sources [MIT License ](https://github.com/YGGverse/YGGo/blob/main/LICENSE )
* Home page animation by [alvarotrigo ](https://codepen.io/alvarotrigo/pen/GRvYNax )
2023-06-25 22:12:07 +03:00
* CLI logo by [patorjk.com ](https://patorjk.com/software/taag/#p=display&f=Slant&t=YGGo! )
2023-04-23 07:12:40 +03:00
2023-08-16 12:47:09 +03:00
#### Feedback
2023-04-01 21:31:51 +03:00
2023-08-16 12:47:09 +03:00
Feel free to [share ](https://github.com/YGGverse/YGGo/issues ) your ideas and bug reports!
2023-04-01 21:31:51 +03:00
2023-08-16 12:47:09 +03:00
#### Community
* [Mastodon ](https://mastodon.social/@YGGverse )
* [[matrix]](https://matrix.to/#/#YGGo:matrix .org)
2023-05-31 16:28:58 +03:00
2023-08-16 12:47:09 +03:00
#### See also
2023-05-31 16:28:58 +03:00
2023-08-16 12:47:09 +03:00
* [YGGwave ~ The Radio Catalog ](https://github.com/YGGverse/YGGwave )
* [YGGstate - Yggdrasil Network Analytics ](https://github.com/YGGverse/YGGstate )