https://github.com/olegpro/bitrix-sphinx
Пакет добавляет в 1С-Битрикс возможность работать с индексами sphinx, через ORM D7
https://github.com/olegpro/bitrix-sphinx
bitrix orm-d7 sphinx
Last synced: 3 months ago
JSON representation
Пакет добавляет в 1С-Битрикс возможность работать с индексами sphinx, через ORM D7
- Host: GitHub
- URL: https://github.com/olegpro/bitrix-sphinx
- Owner: olegpro
- License: mit
- Created: 2017-05-29T09:23:56.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2021-06-27T15:15:45.000Z (almost 5 years ago)
- Last Synced: 2025-10-25T04:24:19.315Z (6 months ago)
- Topics: bitrix, orm-d7, sphinx
- Language: PHP
- Homepage:
- Size: 20.5 KB
- Stars: 27
- Watchers: 4
- Forks: 11
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Olegpro\\BitrixSphinx
[](https://travis-ci.org/olegpro/bitrix-sphinx)
[](https://packagist.org/packages/olegpro/bitrix-sphinx)
[](https://packagist.org/packages/olegpro/bitrix-sphinx)
[](https://packagist.org/packages/olegpro/bitrix-sphinx)
Пакет добавляет в 1С-Битрикс возможность работать с индексами sphinx, через ORM D7, как с привычными сущностями (например \Bitrix\Iblock\ElementTable или \Bitrix\Catalog\PriceTable)
# Настройка
Создаём класс ORM-сущность:
```php
true,
]),
new Main\Entity\StringField('name'),
new Main\Entity\BooleanField('available', [
'values' => [0, 1],
])
];
}
}
```
Описываем новое подключение в файле /bitrix/.settings.php в секцию connections:
```php
'connections' =>
array(
'value' =>
array(
'default' =>
array(
// ...
)
),
'sphinx' =>
array(
'className' => '\\Olegpro\\BitrixSphinx\\DB\\SphinxConnection',
'host' => '127.0.0.1:9306',
'database' => '',
'login' => '',
'password' => '',
'options' => 1,
),
),
'readonly' => true,
),
```
# Использование
```php
startTracker(true);
$iterator = SampleTable::getList([
'select' => [
'*',
new ExpressionField('weight', 'WEIGHT()', 'id'),
],
'match' => 'книга',
'filter' => [
'=available' => 1,
],
'limit' => 10,
'order' => [
'weight' => 'DESC',
],
'option' => [
'max_matches' => 50000,
],
]);
echo '
';print_r($iterator->getTrackerQuery()->getSql());echo '
';
echo '
';print_r($iterator->fetchAll());echo '
';
```
## С постраничной навигацией
```php
startTracker(true);
$nav = new PageNavigation('s');
$nav->allowAllRecords(false)
->setPageSize(10)
->initFromUri();
$iterator = SampleTable::getList([
'select' => [
'*',
new ExpressionField('weight', 'WEIGHT()', 'id'),
],
'match' => 'книга',
'filter' => [
'=available' => 1,
],
'count_total' => true,
'offset' => $nav->getOffset(),
'limit' => $nav->getLimit(),
'order' => [
'weight' => 'DESC',
],
'option' => [
'max_matches' => 50000,
],
]);
$nav->setRecordCount($iterator->getCount());
echo '
';print_r($iterator->getTrackerQuery()->getSql());echo '
';
echo '
';print_r($iterator->fetchAll());echo '
';
$APPLICATION->IncludeComponent(
"bitrix:main.pagenavigation",
"",
array(
"NAV_OBJECT" => $nav,
"SEF_MODE" => "N",
),
false
);
```
# Использование только с master-подключением
Можно установить глобально для всего сайта, добавив в /bitrix/.settings.php
```php
'olegpro_bitrix_sphinx' =>
array (
'value' =>
array (
'use_connection_master_only' => true,
),
'readonly' => false,
),
```
Можно конкретно для каждого запроса передав use_connection_master_only = true:
```php
$iterator = SampleTable::getList([
'select' => [
'*',
new ExpressionField('weight', 'WEIGHT()', 'id'),
],
'match' => 'книга',
'filter' => [
'=available' => 1,
],
'limit' => 10,
'order' => [
'weight' => 'DESC',
],
'option' => [
'max_matches' => 50000,
],
'use_connection_master_only' => true,
]);
```
# Установка пакета
Добавить библиотеку в Composer:
```
composer require olegpro/bitrix-sphinx
```