karelwintersky / arris.toolkit.sphinxql-foolz-wrapper
Arris µFramework SphinxQL Wrapper over Foolz Query Builder
0.99.0
2024-09-10 02:27 UTC
Requires
- php: >=7.4 | 8.*
- foolz/sphinxql-query-builder: ^3.0.2
- psr/log: *
Requires (Dev)
- rector/rector: ^1.2
README
初始化
初始化静态接口到方法
rt_ReplaceIndex
通过数据集更新(替换)一个实时索引条目。
注意:数据集应包含索引中行的ID(实时索引中没有“自动递增”行的概念)
rt_ReplaceIndex(string $index_name, array $updateset)
/**
* Обновляет (REPLACE) реалтайм-индекс по набору данных
* с созданием коннекшена "сейчас"
*
* @param string $index_name
* @param array $updateset
* @return ResultSetInterface|null
*
* @throws DatabaseException
* @throws \Foolz\SphinxQL\Exception\ConnectionException
* @throws \Foolz\SphinxQL\Exception\SphinxQLException
*/
使用示例
$dataset = [
'id' => $id,
'title' => $item['title'],
'short' => $item['short'],
'text' => $item['text_bb'],
'date_added' => date_format( date_create_from_format('Y-m-d H:i:s', $item['cdate']), 'U' ),
'type' => 1,
'photo' => empty($article['photo']['file']) ? 0 : 1,
'author' => $item['author'],
// @todo: REQURED SphinxDynoConf :: MVA Attributes in RT_ARTICLES index
'districts_all' => $item['districts_all'],
'rubrics' => array_keys($item['rubrics']),
'districts' => array_keys($item['districts'])
];
rt_ReplaceIndex('rt_articles', $dataset);
rt_DeleteIndex
从索引中删除一个条目
rt_DeleteIndex(string $index_name, string $field, $field_value = null)
/**
* Удаляет строку реалтайм-индекса
* с созданием коннекшена "сейчас"
*
* @param string $index_name -- индекс
* @param string $field -- поле для поиска индекса
* @param null $field_value -- значение для поиска индекса
* @return ResultSetInterface|null
*
* @throws DatabaseException
* @throws \Foolz\SphinxQL\Exception\ConnectionException
* @throws \Foolz\SphinxQL\Exception\SphinxQLException
*/
使用示例
rt_DeleteIndex('rt_articles', 'id', $id);
rt_RebuildAbstractIndex
逻辑上相当于rebuildAbstractIndexMVA
方法,只是静态的,带有MV属性,并通过Foolz\SQL库
rt_RebuildAbstractIndex(\PDO $pdo_connection, string $sql_source_table, string $sphinx_index, Closure $make_updateset_method, string $condition = '')
/**
* @param \PDO $pdo_connection
* @param string $sql_source_table
* @param string $sphinx_index
* @param Closure $make_updateset_method
* @param string $condition
* @return int
* @throws DatabaseException
* @throws \Foolz\SphinxQL\Exception\ConnectionException
* @throws \Foolz\SphinxQL\Exception\SphinxQLException
*/
createInstance
创建SphinxQL实例(用于一次性更新)
Arris\Toolkit\SphinxToolkit::createInstance()->...