aoepeople/solr-rest-api-client

此包已废弃,不再维护。未建议替代包。

solr rest api 的 PHP 客户端

0.0.2 2014-05-30 12:59 UTC

This package is not auto-updated.

Last update: 2023-06-24 10:04:46 UTC


README

作者 Timo Schmidt <timo.schmidt@aoe.com>
作者 AOE <dev@aoe.com>
描述用于与 Apache Solr 的 RestFul API 通信的 PHP 库
主页http://www.searchperience.com/
构建状态Build Status :target: http://travis-ci.org/timoschmidt/solr-rest-api-client

前言

随着 SOLR [托管资源](https://cwiki.apache.org/confluence/display/solr/Managed+Resources) 功能的出现,我们的目的是实现一个小巧易用的 PHP API 客户端,以便与 SOLR REST API 接口通信。

Solr 客户端基础

solr rest api 客户端可以使用 solr rest api 管理以下 solr 实体

  • 同义词
  • 停用词
  • 托管资源

同义词

在 solr 中,您可以通过在 schema.xml 中添加以下条目来配置一个“托管”的同义词

<filter class="org.apache.solr.rest.schema.analysis.ManagedSynonymFilterFactory" managed="mytag" />

当您已按以下方式定义了托管同义词列表时,您可以在托管资源列表中查看它(例如:http://localhost:8080/<core/collectionpath>/schema/managed)并使用 solr rest api 来管理它

以下示例显示了如何使用 API 客户端管理具有特定标签的同义词

require '<vendorDir>/vendor/autoload.php';

$factory = new \SolrRestApiClient\Common\Factory();
$repository = $factory->getSynonymRepository('localhost',8080,'solr/<yourcore>/');

$synonymCollection = new \SolrRestApiClient\Api\Client\Domain\Synonym\SynonymCollection();

$synonym = new \SolrRestApiClient\Api\Client\Domain\Synonym\Synonym();
$synonym->setMainWord('foo');
$synonym->addWordsWithSameMeaning('bar');
$synonym->addWordsWithSameMeaning('bla');

$synonymCollection->add($synonym);

$result = $repository->addAll($synonymCollection,'mytag');

停用词

在 solr 中,您可以通过在 schema.xml 中添加以下条目来配置一个“托管”的停用词

<filter class="solr.ManagedStopFilterFactory" managed="french" />

当您已按以下方式定义了托管停用词列表时,您可以在托管资源列表中查看它(例如:http://localhost:8080/<core/collectionpath>/schema/managed)并使用 solr rest api 来管理它

以下示例显示了如何使用 API 客户端管理具有特定标签的停用词

require '<vendorDir>/vendor/autoload.php';

$factory = new \SolrRestApiClient\Common\Factory();
$repository = $factory->getStopWordRepository('localhost',8080,'solr/<yourcore>/');

$stopwordCollection = new \SolrRestApiClient\Api\Client\Domain\StopWord\StopWordCollection();

$stopword = new \SolrRestApiClient\Api\Client\Domain\StopWord\StopWord();
$stopword->setWord('foo');

$stopwordCollection->add($stopword);

$result = $repository->addAll($stopwordCollection, 'french');

除了 addAll 方法外,存储库中还存在其他方法,例如

  • getAll;
  • getByWord;
  • deleteAll;
  • deleteByWord;

托管资源

solr 中的一些资源(例如同义词和停用词)可以作为托管资源进行管理。为了能够读取和写入它们,您需要能够从 solr 服务器获取它们。

为此,您可以使用 ManagedResourceRepository。

以下示例显示了如何获取所有同义词资源并向它们添加同义词集合

require '<vendorDir>/vendor/autoload.php';

$factory = new \SolrRestApiClient\Common\Factory();
$managedResourceRepository  = $factory->getManagedResourceRepository('localhost',8080,'solr/<core/collection>/');
$resources                  = $managedResourceRepository->getAll();

$synonymRepository          = $factory->getSynonymRepository('localhost',8080,'solr/<core/collection>/');
$synonymResources           = $resources->getSynonymResources();

foreach($synonymResources as $synonymResource) {
        $synonymRepository->setResource($synonymResource);

    $synonymCollection = new \SolrRestApiClient\Api\Client\Domain\Synonym\SynonymCollection();

    $synonym = new \SolrRestApiClient\Api\Client\Domain\Synonym\Synonym();
    $synonym->setMainWord("one");
    $synonym->addWordsWithSameMeaning("one#one");
    $synonym->addWordsWithSameMeaning("one#two");
    $synonymCollection->add($synonym);

    $synonymRepository->addAll($synonymCollection);
}