YGGo/README.md

184 lines
4.7 KiB
Markdown
Raw Normal View History

2023-04-25 16:44:25 +00:00
### YGGo! - Distributed & Open Source Web Search Engine
2023-04-01 16:40:37 +00:00
2023-04-23 04:16:40 +00:00
роект присвячується захисникам міста Бахмут_
2023-04-12 09:53:51 +00:00
2023-04-05 14:54:46 +00: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 17:50:30 +00:00
This engine also could be useful for crawling regular websites, small business resources, local networks.
2023-04-01 16:40:37 +00:00
2023-04-02 17:50:30 +00:00
The project goal - simple interface, clear architecture and lightweight server requirement.
2023-04-01 16:40:37 +00:00
2023-04-23 04:10:32 +00:00
#### Overview
2023-04-01 18:43:43 +00:00
2023-04-23 04:07:33 +00:00
![Home page](https://github.com/YGGverse/YGGo/blob/main/media/main-sm.png?raw=true)
2023-04-01 18:43:43 +00:00
2023-04-03 14:56:51 +00:00
https://github.com/YGGverse/YGGo/tree/main/media
2023-04-01 16:40:37 +00:00
2023-04-23 04:09:28 +00: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 16:40:37 +00:00
#### Requirements
```
2023-04-02 19:43:05 +00:00
php8^
php-dom
2023-04-01 16:40:37 +00:00
php-pdo
2023-04-02 19:43:38 +00:00
php-curl
2023-04-02 22:59:34 +00:00
php-gd
php-mysql
2023-04-07 15:24:50 +00:00
sphinxsearch
2023-04-01 16:40:37 +00:00
```
2023-04-03 14:56:51 +00:00
#### Installation
2023-04-01 18:01:55 +00:00
2023-04-23 06:03:02 +00:00
* The web root dir is `/public`
2023-04-23 06:03:53 +00:00
* Deploy the database using [MySQL Workbench](https://www.mysql.com/products/workbench) project presented in the `/database` folder
2023-04-23 06:03:02 +00:00
* Install [Sphinx Search Server](https://sphinxsearch.com)
* Configuration examples are placed at `/config` folder
* Make sure `/storage` folder is writable
* Set up the `/crontab` scripts by following [example](https://github.com/YGGverse/YGGo/blob/main/config/crontab.txt)
2023-04-23 00:29:02 +00:00
#### JSON API
2023-04-23 00:01:51 +00:00
2023-04-23 00:29:02 +00:00
Build third party applications / index distribution.
2023-04-23 00:03:27 +00:00
2023-04-23 00:04:01 +00:00
Could be enabled or disabled by `API_ENABLED` option
2023-04-23 00:01:51 +00:00
2023-04-23 00:03:27 +00:00
###### Address
2023-04-23 00:01:51 +00:00
```
/api.php
```
2023-04-25 16:35:52 +00:00
##### Search
2023-04-23 00:01:51 +00:00
Returns search results.
2023-04-23 00:03:27 +00:00
2023-04-23 00:04:01 +00:00
Could be enabled or disabled by `API_SEARCH_ENABLED` option
2023-04-23 00:01:51 +00:00
###### Request attributes
```
2023-04-23 00:08:49 +00:00
GET action=search - required
GET query={string} - optional, search request, empty if not provided
2023-05-04 00:48:57 +00:00
GET type={string} - optional, search type, image|default or empty
2023-04-23 00:08:49 +00:00
GET page={int} - optional, search results page, 1 if not provided
GET mode=SphinxQL - optional, enable extended SphinxQL syntax
2023-04-23 00:01:51 +00:00
```
2023-04-25 16:35:52 +00:00
##### Hosts distribution
2023-04-23 00:01:51 +00:00
2023-04-23 00:08:49 +00:00
Returns node hosts collected with fields provided in `API_HOSTS_FIELDS` option.
2023-04-23 00:03:27 +00:00
2023-04-23 00:04:01 +00:00
Could be enabled or disabled by `API_HOSTS_ENABLED` option
2023-04-23 00:01:51 +00:00
###### Request attributes
```
2023-04-23 00:08:49 +00:00
GET action=hosts - required
2023-04-23 00:01:51 +00:00
```
2023-04-25 16:35:52 +00:00
##### Application manifest
Returns node information.
Could be enabled or disabled by `API_MANIFEST_ENABLED` option
###### Request attributes
```
GET action=manifest - required
```
2023-04-29 04:49:09 +00:00
#### Search textual filtering
##### Default constructions
2023-05-01 16:09:28 +00: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
```
##### Extended syntax
https://sphinxsearch.com/docs/current.html#extended-syntax
Could be enabled with following attributes
```
GET m=SphinxQL
```
2023-05-05 08:46:03 +00:00
#### Roadmap
2023-04-01 16:40:37 +00:00
2023-04-03 14:56:51 +00:00
* [x] Web pages full text ranking search
2023-04-02 20:37:09 +00:00
* [x] Make search results pagination
2023-05-05 08:53:32 +00:00
* [x] Robots.txt / robots meta tags support (Issue #2)
* [ ] Redirect codes extended processing
2023-05-05 08:41:40 +00:00
* [ ] Make page description with found matches highlight
2023-05-05 08:55:50 +00:00
* [x] Images search with safe proxy preview support
2023-05-05 08:49:16 +00:00
* [x] Deprecated index auto cleaner
2023-05-05 08:41:40 +00:00
* [ ] Crawl queue balancer, that depends of CPU available
2023-05-05 08:49:16 +00:00
* [x] Auto stop crawling on disk quota reached
2023-05-05 08:41:40 +00:00
* [ ] Indexing new sites homepage in higher priority
2023-04-07 12:03:00 +00:00
* [x] Add transactions to prevent data loss on DB crashes
2023-04-23 00:01:51 +00:00
* [x] JSON API
2023-05-05 08:56:53 +00:00
* [x] Distributed index data sharing between the nodes trough manifest API
2023-05-05 08:41:40 +00:00
* [x] Unique gravatars for sites without favicons, because simpler to ident, comparing to ipv6
* [ ] Link clicks counter, trough internal stats redirect controller
* [ ] The time machine feature by content history cache preview
2023-05-05 09:17:48 +00:00
* [ ] Context advertising API
* [ ] Administrative panel for useful index moderation
2023-04-01 18:31:51 +00:00
#### Contributions
2023-04-05 16:28:58 +00:00
2023-04-12 10:11:09 +00:00
Please make a new branch of master|sqliteway tree for each patch in your fork before create PR
2023-04-05 16:28:58 +00:00
```
git checkout master
git checkout -b my-pr-branch-name
```
See also: [SQLite tree](https://github.com/YGGverse/YGGo/tree/sqliteway)
2023-04-03 14:56:51 +00:00
#### Donate to contributors
2023-04-02 19:31:49 +00:00
2023-04-08 17:13:13 +00: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 19:31:49 +00:00
2023-04-23 04:12:40 +00: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 14:56:51 +00:00
#### Feedback
2023-04-01 18:31:51 +00:00
2023-04-03 14:56:51 +00: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 18:31:51 +00:00
Have a good time.