indiana-university/iukb-api-php

一套类,用于将IU知识库中的文档拉取到您的应用中

v2.3 2021-10-18 17:12 UTC

This package is auto-updated.

Last update: 2024-09-18 23:28:29 UTC


README

一套类,用于将IU知识库中的文档拉取到您的PHP应用中

要求

用法

要实例化KB类,您只需提供一个提供者。这是一个实例,它将从某个地方拉取KB数据并将其馈送到主KB类。目前有三种不同的提供者,但其中一个是提供缓存的中间类。两个实际的数据提供者是FilesystemWeb

Filesystem

Filesystem类用于测试目的,但也可以以与缓存类中实现不同的方式提供缓存。例如,如果您需要在显示KB文档之前修改其内容。您可以在磁盘上的某个位置保存结果,并通过Filesystem提供者加载它。

require(__dir__ . '/vendor/autoload.php');

use \Edu\Iu\Uits\KnowledgeBase\Provider\Filesystem\Filesystem;

$provider = new Filesystem(__dir__ . '/kbCache/');

Web

Web类用于从知识库REST API加载数据。它需要凭据以认证到REST API。

require(__dir__ . '/vendor/autoload.php');

use \Edu\Iu\Uits\KnowledgeBase\Provider\Web\Web;

$provider = new Web('https://rest.kb.iu.edu', 'username', 'password');

实例化KB类

require(__dir__ . '/vendor/autoload.php');

use \Edu\Iu\Uits\KnowledgeBase\KnowledgeBase;
use \Edu\Iu\Uits\KnowledgeBase\Provider\Web\Web;

$provider = new Web('https://rest.kb.iu.edu', 'username', 'password');

$kb = new KnowledgeBase($provider);

缓存

在之前的版本中,缓存是内置于主类中的,但最终的实现相当混乱。它还迫使用户使用缓存,即使他们不想这样做。现在,缓存由一个单独的中间提供者提供。

缓存类需要提供者、缓存对象和TTL。默认的TTL时间为3600秒。

请注意,缓存提供者还会缓存搜索结果。它将在TTL后始终刷新搜索结果缓存,因为没有方法检查搜索结果是否已更改。

require(__dir__ . '/vendor/autoload.php');

use \Doctrine\Common\Cache\ApcuCache;
use \Edu\Iu\Uits\KnowledgeBase\KnowledgeBase;
use \Edu\Iu\Uits\KnowledgeBase\Provider\{
    Caching\Caching,
    Web\Web,
};

$kb_provider = new Web('https://rest.kb.iu.edu', 'username', 'password');
$cache = new ApucCache();
$provider = new Caching($kb_provider, $cache);

$kb = new KnowledgeBase($provider);

获取文档

$doc = $kb->getDocument('rest');
echo $doc->getContent();

搜索KB

$search = $kb->getSearch('outlook');
foreach ($search->getResults() as $result) {
    echo "[{$result->getDocid()}] {$result->getTitle()}" . PHP_EOL;
}

贡献

以github pull request的形式欢迎贡献。请注意,为了保持一致性,请在您希望为此项目贡献的任何代码上运行composer checkcomposer run-tests,并修复和解决找到的任何问题。