2017 © Pedro PelΓ‘ez
 

library bitrix-sphinx

ΠŸΠ°ΠΊΠ΅Ρ‚ добавляСт Π² 1Π‘-Битрикс Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с индСксами sphinx, Ρ‡Π΅Ρ€Π΅Π· ORM D7

image

olegpro/bitrix-sphinx

ΠŸΠ°ΠΊΠ΅Ρ‚ добавляСт Π² 1Π‘-Битрикс Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с индСксами sphinx, Ρ‡Π΅Ρ€Π΅Π· ORM D7

  • Friday, June 22, 2018
  • by olegpro
  • Repository
  • 3 Watchers
  • 9 Stars
  • 256 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 2 Forks
  • 0 Open issues
  • 8 Versions
  • 6 % Grown

The README.md

Olegpro\BitrixSphinx

Build Status Latest Stable Version Total Downloads License, (*1)

ΠŸΠ°ΠΊΠ΅Ρ‚ добавляСт Π² 1Π‘-Битрикс Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с индСксами sphinx, Ρ‡Π΅Ρ€Π΅Π· ORM D7, ΠΊΠ°ΠΊ с ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ сущностями (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ \Bitrix\Iblock\ElementTable ΠΈΠ»ΠΈ \Bitrix\Catalog\PriceTable), (*2)

Настройка

Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ класс ORM-ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ:, (*3)

<?php

use Bitrix\Main;
use Bitrix\Main\Localization\Loc;
use Olegpro\BitrixSphinx\Entity\SphinxDataManager;
use Olegpro\BitrixSphinx\Entity\SphinxQuery;

Loc::loadMessages(__FILE__);

class SampleTable extends SphinxDataManager
{

    /**
     * Returns index sphinx name for entity.
     *
     * @return string
     */
    public static function getTableName()
    {
        return 'sample_index';
    }

    /**
     * Returns sphinx-connection name for entity
     *
     * @return string
     */
    public static function getConnectionName()
    {
        return 'sphinx';
    }

    /**
     * Creates and returns the Query object for the entity
     *
     * @return SphinxQuery
     */
    public static function query()
    {
        return new SphinxQuery(static::getEntity());
    }

    /**
     * Returns entity map definition.
     *
     * @return array
     */
    public static function getMap()
    {
        return [
            new Main\Entity\IntegerField('id', [
                'primary' => true,
            ]),
            new Main\Entity\StringField('name'),
            new Main\Entity\BooleanField('available', [
                'values' => [0, 1],
            ])
        ];

    }

}

ΠžΠΏΠΈΡΡ‹Π²Π°Π΅ΠΌ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² Ρ„Π°ΠΉΠ»Π΅ /bitrix/.settings.php Π² ΡΠ΅ΠΊΡ†ΠΈΡŽ connections:, (*4)

'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

use Bitrix\Main\Application;
use Bitrix\Main\Entity\ExpressionFieldd;

require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/header.php');

Application::getConnection(SampleTable::getConnectionName())->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

use Bitrix\Main\Application;
use Bitrix\Main\Entity\ExpressionFieldd;
use Bitrix\Main\UI\PageNavigation;

require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/header.php');

Application::getConnection(SampleTable::getConnectionName())->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, (*5)

'olegpro_bitrix_sphinx' => 
    array (
        'value' => 
            array (
              'use_connection_master_only' => true,
            ),
    'readonly' => false,
),

МоТно ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ запроса ΠΏΠ΅Ρ€Π΅Π΄Π°Π² use_connection_master_only = true:, (*6)


$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:, (*7)

composer require olegpro/bitrix-sphinx

The Versions

22/06 2018

dev-master

9999999-dev

ΠŸΠ°ΠΊΠ΅Ρ‚ добавляСт Π² 1Π‘-Битрикс Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с индСксами sphinx, Ρ‡Π΅Ρ€Π΅Π· ORM D7

  Sources   Download

MIT

The Requires

  • php >=5.4.0

 

orm bitrix sphinx

22/06 2018

0.1.4

0.1.4.0

ΠŸΠ°ΠΊΠ΅Ρ‚ добавляСт Π² 1Π‘-Битрикс Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с индСксами sphinx, Ρ‡Π΅Ρ€Π΅Π· ORM D7

  Sources   Download

MIT

The Requires

  • php >=5.4.0

 

orm bitrix sphinx

23/08 2017

0.1.3

0.1.3.0

ΠŸΠ°ΠΊΠ΅Ρ‚ добавляСт Π² 1Π‘-Битрикс Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с индСксами sphinx, Ρ‡Π΅Ρ€Π΅Π· ORM D7

  Sources   Download

MIT

The Requires

  • php >=5.4.0

 

orm bitrix sphinx

21/06 2017

0.1.2

0.1.2.0

ΠŸΠ°ΠΊΠ΅Ρ‚ добавляСт Π² 1Π‘-Битрикс Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с индСксами sphinx, Ρ‡Π΅Ρ€Π΅Π· ORM D7

  Sources   Download

MIT

The Requires

  • php >=5.4.0

 

orm bitrix sphinx

12/06 2017

0.1.1

0.1.1.0

ΠŸΠ°ΠΊΠ΅Ρ‚ добавляСт Π² 1Π‘-Битрикс Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с индСксами sphinx, Ρ‡Π΅Ρ€Π΅Π· ORM D7

  Sources   Download

MIT

The Requires

  • php >=5.4.0

 

orm bitrix sphinx

29/05 2017

0.1.0

0.1.0.0

ΠŸΠ°ΠΊΠ΅Ρ‚ добавляСт Π² 1Π‘-Битрикс Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с индСксами sphinx, Ρ‡Π΅Ρ€Π΅Π· ORM D7

  Sources   Download

MIT

The Requires

  • php >=5.4.0

 

orm bitrix sphinx

29/05 2017

0.0.2

0.0.2.0

ΠŸΠ°ΠΊΠ΅Ρ‚ добавляСт Π² 1Π‘-Битрикс Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с индСксами sphinx, Ρ‡Π΅Ρ€Π΅Π· ORM D7

  Sources   Download

MIT

The Requires

  • php >=5.4.0

 

orm bitrix sphinx

29/05 2017

0.0.1

0.0.1.0

  Sources   Download

MIT

The Requires

  • php >=5.4.0

 

orm bitrix sphinx