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" />
当您已按以下方式定义了托管同义词列表时,您可以在托管资源列表中查看它(例如: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); }