mirror of
https://codeberg.org/postscriptum/gemlog.git
synced 2026-02-19 06:22:41 +00:00
initial commit
This commit is contained in:
commit
259fee630b
127 changed files with 7811 additions and 0 deletions
162
public/uk/manticore-as-modern-alternative-to-sphinx-search.gmi
Normal file
162
public/uk/manticore-as-modern-alternative-to-sphinx-search.gmi
Normal file
|
|
@ -0,0 +1,162 @@
|
|||
# Manticore як сучасна альтернатива Sphinx
|
||||
|
||||
Багато хто використовує для повнотекстового пошуку рушій Sphinx:
|
||||
|
||||
=> https://sphinxsearch.com
|
||||
|
||||
і пише для нього нові програми, але мало хто знає про його сучасну реалізацію - Manticore:
|
||||
|
||||
=> https://manticoresearch.com
|
||||
|
||||
Класично, сферою застосування може бути пошуковий сервер для сайту, будь якої бази даних, індекс кравлера інтернет / локальної мережі, тощо.
|
||||
|
||||
У той час, як Sphinx версії 3 і досі має закритий код, Manticore - це форк відкритого Sphinx 2.
|
||||
|
||||
Наразі активно розробляється, має живу спільноту і містить багато доповнень, особливо в плані автоматизації real-time індексів.
|
||||
|
||||
Окрім того, Manticore у більшості випадків може замінити собою сервер PostgreSQL або MySQL, де не потрібна гнучка вибірка і багаторівневі запити.
|
||||
|
||||
Таким чином, можна значно заощадити на використанні жорсткого диску для великих індексів а також зменшити використання пам'яті у разі, якщо MySQL використовується просто як основна база даних (до якої раніше звертався Sphinx через document ID).
|
||||
|
||||
## Встановлення
|
||||
|
||||
На прикладі Debian / Linux, доволі просте:
|
||||
|
||||
```
|
||||
wget https://repo.manticoresearch.com/manticore-repo.noarch.deb
|
||||
dpkg -i manticore-repo.noarch.deb
|
||||
apt update
|
||||
apt install manticore manticore-extra
|
||||
```
|
||||
|
||||
Сервіс одразу буде доступний через systemd:
|
||||
|
||||
```
|
||||
systemctl start manticore
|
||||
```
|
||||
|
||||
Працює сервер на порті `9308`
|
||||
|
||||
Після запуску, можна підключитись клієнтом MySQL і взаємодіяти через SphinxQL:
|
||||
|
||||
=> http://sphinxsearch.com/docs/current/sphinxql-reference.html
|
||||
|
||||
```
|
||||
mysql -P9306 -h0
|
||||
```
|
||||
|
||||
В рамках цього матеріалу не будуть описані детальні мануали.
|
||||
|
||||
Оскільки проєкт має хорошу документацію:
|
||||
|
||||
=> https://manual.manticoresearch.com/Introduction
|
||||
|
||||
досвідчені користувачі Sphinx з легкістю можуть застосовувати свій досвід, наприклад в "searchd", що має таку само архітектуру, а синтаксис "extended-search":
|
||||
|
||||
=> https://sphinxsearch.com/docs/latest/extended-syntax.html
|
||||
|
||||
- повністю сумісний.
|
||||
|
||||
## Інтеграція
|
||||
|
||||
Проєкт має багато офіційних бібліотек для різних мов програмування, зокрема:
|
||||
|
||||
=> https://github.com/manticoresoftware/manticoresearch-php
|
||||
|
||||
Розгортання програми з цією бібліотекою настільки просте, що зводиться до наступних рядків:
|
||||
|
||||
```
|
||||
composer require manticoresoftware/manticoresearch-php
|
||||
```
|
||||
|
||||
```
|
||||
<?php
|
||||
|
||||
$client = new \Manticoresearch\Client(
|
||||
[
|
||||
'host' => 'localhost',
|
||||
'port' => 9308
|
||||
]
|
||||
);
|
||||
|
||||
$index = $client->index(
|
||||
'test_index'
|
||||
);
|
||||
|
||||
$index->create(
|
||||
[
|
||||
'field1' => [ 'type' => 'text' ],
|
||||
'field2' => [ 'type' => 'text' ]
|
||||
]
|
||||
);
|
||||
|
||||
$index->addDocument(
|
||||
[
|
||||
'field1' => 'hello',
|
||||
'field1' => 'world'
|
||||
],
|
||||
);
|
||||
|
||||
$results = $index->search('hello')->get();
|
||||
```
|
||||
|
||||
Кому цікавий приклад програми на PHP, може відвідати сторінку дуже простого кравлера з веб інтерфейсом:
|
||||
|
||||
=> https://github.com/YGGverse/Yo
|
||||
|
||||
який був написаний в максимально короткі терміни для мережі Yggdrasil:
|
||||
|
||||
=> yggdrasil-is-network-with-distributed-routing.gmi Yggdrasil - мережа з децентралізованим роутингом
|
||||
|
||||
Наразі містить в своєму індексі близько 10.000.000 сторінок, при цьому потужності серверу рівні мінімальному тарифу VPS за 5 євро.
|
||||
|
||||
Для роботи з SphinxSQL в PHP зручно використовувати "php-pdo"; для фільтрації деяких текстових полів - можна додати окреме поле "crc32", також такий підхід можна використовувати у якості Document ID (коли є потреба зменшити об'єм даних і не критична точність)
|
||||
|
||||
## Бекапи
|
||||
|
||||
Декілька слів про бекапи: їх традиційно два типи - логічний і фізичний.
|
||||
|
||||
### Логічний бекап
|
||||
|
||||
Дозволяє генерувати SQL дампи, які наприклад зручно читати, але вони потребують більше ресурсів, тому виконуються рідше.
|
||||
Приклад створення дампу буде таким:
|
||||
|
||||
```
|
||||
mysqldump -h0 -P9306 manticore test_index > test_index.sql
|
||||
```
|
||||
|
||||
### Фізичний бекап
|
||||
|
||||
Такий спосіб передбачає копіювання "сирих" даних до відповідної теки, не вимагає багато ресурсів на обчислення і виконується частіше:
|
||||
|
||||
```
|
||||
/usr/bin/manticore-backup --backup-dir=/home/backup/manticore
|
||||
```
|
||||
|
||||
## Власний досвід
|
||||
|
||||
Працювати з Manticore одне задоволення, що доводилось робити руками в Sphinx - вже працює з коробки.
|
||||
|
||||
Маю не перший проєкт на цьому рушії, подекуди повністю відмовився від MySQL, хоч іноді це не дуже зручно, але більше не витрачаю свій час на
|
||||
проєктування в MySQL Workbench і віддаю перевагу прямому зберіганню даних до індексу в менш нормалізованому, але більш швидкому в розробці форматі.
|
||||
|
||||
Єдине, що б радив зробити, це перемкнути стандартний рівень "binlog" в режим "1", інакше можуть бути незручності з останніми транзакціями, якщо ваш сервер чутливий до вимикання світла, а транзакції відбуваються часто (у разі ймовірності отримати збій в посeкундному режимі зберігання).
|
||||
|
||||
Зробити це можна у файлі:
|
||||
|
||||
``` /etc/manticoresearch/manticore.conf
|
||||
searchd {
|
||||
...
|
||||
binlog_flush = 1
|
||||
}
|
||||
```
|
||||
|
||||
=> https://manual.manticoresearch.com/Logging/Binary_logging#Binary-flushing-strategies Детальніше про стратегії бінарних журналів
|
||||
|
||||
## Посилання
|
||||
|
||||
=> https://manticoresearch.com Офіційний сайт Manticore
|
||||
|
||||
## Дивіться також
|
||||
|
||||
=> manticore-as-primary-database-usage-issues.gmi Незручні моменти в роботі з Manticore як основної БД
|
||||
Loading…
Add table
Add a link
Reference in a new issue