easybib/generator-processes

迭代器的一系列过程

1.1.3 2014-09-26 12:24 UTC

This package is not auto-updated.

Last update: 2024-09-14 16:18:48 UTC


README

操作迭代器的一系列过程,通常作为生成器实现

Build Status

过程

所有过程都是可调用的,它们在输入可遍历对象(通常是迭代器)上操作,并返回一个迭代器。

批量添加Elastica文档

\EasyBib\Process\Elastica::write 使用Elastica通过Elastica类型批量将文档数组写入Elasticsearch。您可以使用 Elastica::bindWrite($type) 获取只接受文档集迭代器的方法。

use Easybib\Process\Elastica;

$documentGroups = [
    [$doc1, $doc2, $doc3],
    [$doc4, $doc5],
];

$outputIterator = Elastica::write($elasticaType, $documentGroups);
// equivalent to
$write = Elastica::bindWrite($elasticaType);
$outputIterator = $write($documentGroups);

// $documentGroups == iterator_to_array($outputIterator);

搜索Elastica文档

EasyBib\Process\Elastica::search 使用Elastica搜索与给定搜索查询匹配的文档集。您可以使用 Elastica::bindSearch($type, $limit) 获取只接受搜索查询字符串和初始搜索偏移量的方法。

use Easybib\Process\Elastica;

$iterator = Elastica::search($elasticaIndex, 100, $keywords, 0);
// equivalent to
$search = Elastica::bindSearch($elasticaIndex, 100);
$iterator = $search($keywords, 0);

批量化转换

\EasyBib\Process\Transform::bulkify 将输入迭代器聚合为数组。

use Easybib\Process\Transform;

$items = [1, 2, 3, 4];

$outputIterator = Transform::bulkify(2, $items);
// equivalent to
$bulkify = Transform::bindBulkify(2);
$outputIterator = $bulkify($items);

// [[1, 2], [3, 4]] == iterator_to_array($outputIterator)

非批量化转换

通过单级扁平化输入,从而反转批量化操作。

use Easybib\Process\Transform;

$bulks = [[1, 2], [3, 4], [5, ['some', 'array']]]];

$outputIterator = Transform::unbulkify($bulks);

// [1, 2, 3, 4, 5, ['some', 'array']] == iterator_to_array($outputIterator)