Skip to content
This repository was archived by the owner on Mar 4, 2025. It is now read-only.

Commit d0676b8

Browse files
0.9
pre-release
1 parent f010758 commit d0676b8

File tree

3 files changed

+733
-0
lines changed

3 files changed

+733
-0
lines changed
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
<?php
2+
3+
namespace Arris\Toolkit;
4+
5+
use Closure;
6+
use Foolz\SphinxQL\Drivers\ResultSetInterface;
7+
use Foolz\SphinxQL\Exception\ConnectionException;
8+
use Foolz\SphinxQL\Exception\DatabaseException;
9+
use Foolz\SphinxQL\Exception\SphinxQLException;
10+
use Foolz\SphinxQL\SphinxQL;
11+
use PDO;
12+
13+
/**
14+
* Interface __SphinxToolkitFoolzInterface
15+
*
16+
*
17+
*
18+
* @package Arris\Toolkit
19+
*/
20+
interface SphinxToolkitFoolzInterface {
21+
22+
/**
23+
* Инициализация статического интерфейса к методам
24+
*
25+
* @param string $sphinx_connection_host
26+
* @param string $sphinx_connection_port
27+
* @param array $options
28+
*/
29+
public static function init(string $sphinx_connection_host, string $sphinx_connection_port, $options = []);
30+
31+
/**
32+
* Создает коннекшен для множественных обновлений (в крон-скриптах, к примеру, вызывается после init() )
33+
*/
34+
public static function initConnection();
35+
36+
/**
37+
* Создает инстанс SphinxQL (для однократного обновления)
38+
*
39+
* @return SphinxQL
40+
*/
41+
public static function createInstance();
42+
43+
/**
44+
* Обновляет (UPDATE) реалтайм-индекс по набору данных
45+
* с созданием коннекшена "сейчас"
46+
*
47+
* @param string $index_name
48+
* @param array $updateset
49+
* @return ResultSetInterface|null
50+
*
51+
* @throws DatabaseException
52+
* @throws ConnectionException
53+
* @throws SphinxQLException
54+
*/
55+
public static function rt_UpdateIndex(string $index_name, array $updateset);
56+
57+
/**
58+
* Замещает (REPLACE) реалтайм-индекс по набору данных
59+
* с созданием коннекшена "сейчас"
60+
*
61+
* @param string $index_name
62+
* @param array $updateset
63+
* @return ResultSetInterface|null
64+
*
65+
* @throws DatabaseException
66+
* @throws ConnectionException
67+
* @throws SphinxQLException
68+
*/
69+
public static function rt_ReplaceIndex(string $index_name, array $updateset);
70+
71+
/**
72+
* Удаляет строку реалтайм-индекса
73+
* с созданием коннекшена "сейчас"
74+
*
75+
* @param string $index_name -- индекс
76+
* @param string $field -- поле для поиска индекса
77+
* @param null $field_value -- значение для поиска индекса
78+
* @return ResultSetInterface|null
79+
*
80+
* @throws DatabaseException
81+
* @throws ConnectionException
82+
* @throws SphinxQLException
83+
*/
84+
public static function rt_DeleteIndex(string $index_name, string $field, $field_value = null);
85+
86+
/**
87+
* @param PDO $pdo_connection
88+
* @param string $sql_source_table
89+
* @param string $sphinx_index
90+
* @param Closure $make_updateset_method
91+
* @param string $condition
92+
* @return int
93+
* @throws DatabaseException
94+
* @throws ConnectionException
95+
* @throws SphinxQLException
96+
*/
97+
public static function rt_RebuildAbstractIndex(PDO $pdo_connection, string $sql_source_table, string $sphinx_index, Closure $make_updateset_method, string $condition = '');
98+
99+
/**
100+
* Получает инстанс (для множественных обновлений)
101+
*
102+
* @return SphinxQL
103+
*/
104+
public static function getInstance();
105+
}
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
<?php
2+
3+
namespace Arris\Toolkit;
4+
5+
use Closure;
6+
use Exception;
7+
use PDO;
8+
9+
/**
10+
* Interface __SphinxToolkitMysqliInterface
11+
*
12+
*
13+
*
14+
* @package Arris\Toolkit
15+
*/
16+
interface SphinxToolkitMysqliInterface {
17+
18+
/**
19+
* SphinxToolkit constructor.
20+
*
21+
* @param PDO $mysql_connection
22+
* @param PDO $sphinx_connection
23+
*/
24+
public function __construct(PDO $mysql_connection, PDO $sphinx_connection);
25+
26+
/**
27+
* Устанавливает опции для перестроителя RT-индекса
28+
*
29+
* @param array $options - новый набор опций
30+
* @return array - результирующий набор опций
31+
*/
32+
public function setRebuildIndexOptions(array $options = []):array;
33+
34+
/**
35+
* Перестраивает RT-индекс
36+
*
37+
* @param string $mysql_table -- SQL-таблица исходник
38+
* @param string $sphinx_index -- имя индекса (таблицы)
39+
* @param Closure $make_updateset_method -- замыкание, анонимная функция, преобразующая исходный набор данных в то, что вставляется в индекс
40+
* @param string $condition -- условие выборки из исходной таблицы (без WHERE !!!)
41+
*
42+
* @param bool $use_mva -- используются ли MultiValued-атрибуты в наборе данных?
43+
* @param array $mva_indexes_list -- список MVA-индексов, значения которых не нужно биндить через плейсхолдеры
44+
*
45+
* @return int -- количество обновленных записей в индексе
46+
* @throws Exception
47+
*/
48+
public function rebuildAbstractIndex(string $mysql_table, string $sphinx_index, Closure $make_updateset_method, string $condition = '', bool $use_mva = false, array $mva_indexes_list = []):int;
49+
50+
/**
51+
* DEPRECATED
52+
*
53+
* @param string $mysql_table -- SQL-таблица исходник
54+
* @param string $sphinx_index -- имя индекса (таблицы)
55+
* @param Closure $make_updateset_method -- замыкание, анонимная функция, преобразующая исходный набор данных в то, что вставляется в индекс
56+
* @param string $condition -- условие выборки из исходной таблицы (без WHERE !!!)
57+
* @param array $mva_indexes_list -- список MVA-индексов, значения которых не нужно биндить через плейсхолдеры
58+
*
59+
* @return int
60+
* @throws Exception
61+
*/
62+
public function rebuildAbstractIndexMVA(string $mysql_table, string $sphinx_index, Closure $make_updateset_method, string $condition = '', array $mva_indexes_list = []):int;
63+
64+
/**
65+
* Эмулирует BuildExcerpts из SphinxAPI
66+
*
67+
* @param $source
68+
* @param $needle
69+
* @param $options
70+
* 'before_match' => '<strong>', // Строка, вставляемая перед ключевым словом. По умолчанию "<strong>".
71+
* 'after_match' => '</strong>', // Строка, вставляемая после ключевого слова. По умолчанию "</strong>".
72+
* 'chunk_separator' => '...', // Строка, вставляемая между частями фрагмента. по умолчанию "...".
73+
*
74+
* опции 'limit', 'around', 'exact_phrase' и 'single_passage' в эмуляции не реализованы
75+
*
76+
* @return mixed
77+
*/
78+
public static function EmulateBuildExcerpts($source, $needle, $options);
79+
}

0 commit comments

Comments
 (0)