定制 ltd-beget/sphinx-configurator 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

ltd-beget/sphinx-configurator

最新稳定版本:v2.0.0

Composer 安装命令:

composer require ltd-beget/sphinx-configurator

包简介

Php library for parsing and editing sphinx.conf files.

关键字:

README 文档

README

Latest Stable Version Total Downloads Scrutinizer Code Quality Code Coverage Build Status Documentation Documentation License MIT

Php library for parsing and editing sphinx.conf files programmatically with high level abstraction.

Installation

composer require ltd-beget/sphinx-configurator

Sphinx version

The library supports the following versions of sphinx:

Usage

work with documentation informer

This class give you full information about concrete option. You can use it separately if you need.

<?php
    require './vendor/autoload.php';
    
    use LTDBeget\sphinx\enums\eSection;
    use LTDBeget\sphinx\enums\eVersion;
    use LTDBeget\sphinx\enums\options\eIndexerOption;
    use LTDBeget\sphinx\informer\Informer;
    
    // chose version
    $version = eVersion::V_2_2_10();
    
    // get options help informer
    $informer = Informer::get($version);
    
    // chose section
    $section = eSection::INDEXER();
    
    // check is known option type
    // useful only for version 2.1.9 and lower for section common
    $informer->isSectionExist($section); 
    
    
    // see all options info
    foreach ($informer->iterateOptionInfo($section) as $optionInfo) {
        $optionInfo->getName();
        $optionInfo->getDescription();
        $optionInfo->getDocLink();
        $optionInfo->getVersion();
        $optionInfo->getSection();
        $optionInfo->isIsMultiValue();
    }
    
    // concrete option
    
    $option = eIndexerOption::LEMMATIZER_CACHE();
    // is option exist in current version
    $informer->isKnownOption($section, $option);
    
    // is option permanently removed from newer version of Sphinx
    $informer->isRemovedOption($section, $option);
    
    // see concrete option info
    $optionInfo = $informer->getOptionInfo($section, $option);
    $optionInfo->getName();
    $optionInfo->getDescription();
    $optionInfo->getDocLink();
    $optionInfo->getVersion();
    $optionInfo->getSection();
    $optionInfo->isIsMultiValue();

work with configuration object

<?php
require './vendor/autoload.php';

    use LTDBeget\sphinx\configurator\Configuration;
    use LTDBeget\sphinx\enums\eVersion;
    use LTDBeget\sphinx\enums\options\eIndexOption;
    use LTDBeget\sphinx\enums\options\eSearchdOption;
    use LTDBeget\sphinx\enums\options\eSourceOption;
    
    // chose version
    $version = eVersion::V_2_2_10();
    
    // get content of your configuration file
    $path_to_configuration = __DIR__. '/sphinx/conf/valid.example.conf';
    $content = file_get_contents($path_to_configuration);
    
    
    // create object from string
    // if your configuration is valid it will be deserialized into the object
    // note that if your configuration has options which 
    // was permanently removed from newer versions of sphinx
    // they will be ignored
    $configuration = Configuration::fromString($content, $version);
    
    // if you want, you can store the configuration in different formats
    $as_array = $configuration->toArray();
    $as_json  = $configuration->toJson();
    
    // if you need to make sphinx conf file content cast object to string
    $as_plain = (string) $configuration;
    
    // configuration object serialized as array or json can be deserialized
    $configuration = Configuration::fromArray($as_array, $version);
    $configuration = Configuration::fromJson($as_json, $version);
    
    // or you can create empty object and fill it yourself
    $configuration = new Configuration($version);
    
    // adding source sections
    $source = $configuration->addSource('source1');
    $source->addOption(eSourceOption::TYPE(), 'mysql');
    
    $source = $configuration->addSource('source2', 'source1');
    $source->addOption(eSourceOption::TYPE(), 'pgsql');
    
    // is section has inheritance
    $source->isHasInheritance();
    
    // get parent section object
    $source->getInheritance();
    
    // note that sphinx has multi value options (MVA)
    // if you add twice or more times MVA option each time new option wil added
    $source->addOption(eSourceOption::XMLPIPE_ATTR_MULTI_64(), '1234567890');
    $source->addOption(eSourceOption::XMLPIPE_ATTR_MULTI_64(), '0987654321');
    
    // but if you add not MVA option twice, newer option erases older
    $source->addOption(eSourceOption::CSVPIPE_DELIMITER(), '|'); // will be erased
    $source->addOption(eSourceOption::CSVPIPE_DELIMITER(), '.'); // this is set in configuration
    
    // adding index sections
    $source = $configuration->addIndex('index1');
    $source->addOption(eIndexOption::SOURCE(), 'source1');
    
    $source = $configuration->addIndex('index2', 'index1');
    $source->addOption(eIndexOption::SOURCE(), 'source2');
    
    // check is has settings sections
    $configuration->isHasCommon();
    $configuration->isHasSearchd();
    $configuration->isHasIndexer();
    
    // get settings section (it will be created if doesn't exists)
    $searchd = $configuration->getSearchd();
    
    // add option to settings
    $searchd->addOption(eSearchdOption::LISTEN(), '9312');
    
    // for indexer and common work is same
    $indexer = $configuration->getIndexer();
    $common  = $configuration->getCommon();
    
    // each section can be deleted.
    // note, if you delete section that is parent to some one, its child will be removed too.
    $common->delete();
    
    
    // iterating and manipulation with options
    
    // index and source is multiple sections
    // for iterating via it use iterateSource() or iterateIndex()
    foreach($configuration->iterateSource() as $section) {
        foreach ($section->iterateOptions() as $option) {
            $option->getInfo();
            $option->getName();
            $option->getValue();
    
            if($option->getValue() === 'pgsql' && $option->getName()->is(eSourceOption::TYPE())) {
                $option->delete();
            }
    
            if($option->getValue() === 'mysql' && $option->getName()->is(eSourceOption::TYPE())) {
                $option->setValue('pgsql');
            }
        }
    }
    
    // searchd, indexer and common is single section
    // so iterate via options like this
    foreach($configuration->getIndexer()->iterateOptions() as $option) {
        $option->getInfo();
        $option->getName();
        $option->getValue();
    }
    
    // and now, cast to string and see your brilliant configuration ;)
    echo $configuration;

Sphinx configuration tokenize only

if you want only tokenize sphinx configuration you can use this library

Developers

Docker

install docker and docker-compose

Go to docker

cd docker

Build image

docker-compose build

Check concrete config from stubs directory via sphinx indextool

docker-compose run --rm sphinx indextool --checkconfig -c /etc/sphinxsearch/valid.example.conf

Regenerate documentation

$ ./vendor/bin/phpdox

Run tests

$ php phpunit.phar --coverage-html coverage

License

sphinx-configurator is released under the MIT License. See the bundled LICENSE file for details.

统计信息

  • 总下载量: 6.28k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 6
  • 点击次数: 3
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 5
  • Watchers: 19
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: Unknown
  • 更新时间: 2016-03-19

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固