An open API service indexing awesome lists of open source software.

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

Awesome Lists containing this project

README

          

# Olegpro\\BitrixSphinx

[![Build Status](https://travis-ci.org/olegpro/bitrix-sphinx.svg)](https://travis-ci.org/olegpro/bitrix-sphinx)
[![Latest Stable Version](https://poser.pugx.org/olegpro/bitrix-sphinx/v/stable)](https://packagist.org/packages/olegpro/bitrix-sphinx)
[![Total Downloads](https://poser.pugx.org/olegpro/bitrix-sphinx/downloads)](https://packagist.org/packages/olegpro/bitrix-sphinx)
[![License](https://poser.pugx.org/olegpro/bitrix-sphinx/license)](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
```