aoepeople / solr-rest-api-client
solr rest api 的 PHP 客户端
Requires
- php: >=5.3.3
- guzzle/guzzle: v3.8.1
Requires (Dev)
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/ |
| 构建状态 |
前言
随着 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" />
当您已按以下方式定义了托管同义词列表时,您可以在托管资源列表中查看它(例如:https://: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" />
当您已按以下方式定义了托管停用词列表时,您可以在托管资源列表中查看它(例如:https://: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);
}